问题标签 [wix3.6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4357 浏览

wix - 字符串比较条件

当我得到这样的建筑类型时:

并想检查它是否是这样的“AMD64”:

它失败。当我将值设置为静态时:

它在真实范围内。那么为什么注册表中的值(有值 AMD64)与我的证明字符串不一样????

提前缴费

0 投票
2 回答
3286 浏览

wix - 从安装程序将安装位置写入注册表

我正在使用WiX 3.6创建安装程序。

需求之一是将安装位置的位置写入 HKCU 或 HKLM 中的注册表,具体取决于 ALLUSERS 属性。

现在根据我所做的研究,我认为以下应该有效

问题是它仅适用于 ALLUSERS="" 即 HKMU 被解释为 HKCU 的情况。

如果我尝试在 ALLUSERS=1 的情况下进行 perMachine 安装,则该条目不会按预期写入 HKLM,但是当我查看安装程序日志文件时,我看到了对 WriteRegistryValues 的调用。

有人可以解释如何完成我需要完成的任务

0 投票
2 回答
1653 浏览

user-interface - 如何创建允许在维护模式下运行时卸载特定实例的 MSI UI

我们正在使用 WIX 3.6 为 Silverlight/WCF 应用程序创建安装程序。我们需要能够安装多个实例来提供例如“Live”、“Test”和“Demo”。每个实例必须能够运行不同的版本并独立升级。这允许在升级“Live”之前在“Test”中安装新版本。

我正在使用 InstanceTransforms 机制来切换 ProductCode 和 CustomActions 来切换最多 10 个实例的 UpgradeCode。

我还设法通过自定义 MaintenanceTypeDlg 来创建 UI,以允许在不使用命令行的情况下安装新实例。我设置了 MSINEWINSTANCE=1 和 TRANSFORMS=:Instance,其中 Instance 是我在 ExecuteInstall 之前无法在注册表中找到的第一个实例。

我还可以通过主要升级路径升级默认实例。添加/删除程序上的删除和修复选项也可以正常工作。

我遇到的问题是在维护对话框中创建用于升级、修复或删除特定实例的机制。

我创建了一个 ComboBox,它使用带有所有已安装实例的 id 和名称的 CustomAction 填充,但我找不到可靠地将这些信息从 InstallUISequence 传递到 InstallExecuteSequence 的方法。

我尝试指定 TRANSFORMS=:Instance 但服务器 MSI 删除了该属性。我尝试指定 MSIINSTANCEGUID={[SelectedGuid]},但服务器 MSI 抱怨它是对属性的无效使用,因为它不是多实例安装。

我设法使用带有 TRANSFORMS=:InstancetoUpgrade 的命令行工作的特定实例的升级安装,并将 UpgradeTable 设置的属性覆盖到正确的实例 ProductCode,但是它缓存了 TRANSFORMS,并且如果没有 TRANSFORMS=,则始终应用该转换在命令行中指定。TransformsSecure 政策已设置,但我们无法在客户网站上更改此政策。

我无法找到 MSI 或 WIX 的任何文档或示例,这些文档或示例显示了在 InstallUISequence 和 InstallExecuteSequence 之间设置的正确属性,以强制服务器升级、修复或删除 MSI 中默认实例以外的实例用户界面已启动。

如果有人设法使多实例 MSI 的这个或类似方面工作,请发布任何 CustomAction、Properties 等示例,或有关如何使其工作的提示。

编辑:

我已经设法通过设置属性获得新版本的 MSI 来升级特定实例: UPGRADEFOUND={PreviousInstanceGUID} TRANSFORMS=:Instance;

但是,如果我再次尝试运行 MSI 以升级差异实例 TRANSFORMS 已经设置为我刚刚升级的那个。我的 UI 无法区分 MSI 是被双击还是从脚本运行以升级/修复特定实例。在维护模式下运行时,MSI 似乎也忽略了切换到服务器时对 TRANSFORMS 属性的任何更改。我需要一种方法来处理在某些情况下它将处于维护模式和其他升级模式的事实。实际上,当在 UI 中选择差异实例时,我需要能够重新运行 FindRelatedProducts 和 AppSearch。

0 投票
1 回答
554 浏览

wix - 自定义 CancelDlgIcon 以显示警告符号

我需要在 wix 中显示 CancelDlg 的警告图像而不是信息图像。我可以通过添加以下代码来做到这一点:

但是,我为不同的语言构建了版本,例如 fr-fr、ja-jp、en-us 等。

仅对我们而言,它工作正常。对于其他语言,不显示警告图标 :(

谁能帮助我,让我知道要进行哪些更改以使其适用于所有语言(es-es、en-us、fr-fr、ja-jp 等)?

0 投票
2 回答
853 浏览

visual-studio-2010 - 在 VS2010 + Wix 3.6 中将组件绑定到 wixlib

我正在将我们的 wix 项目从 3.0 转换为 3.6。在 VS2010/wix3.6 设置中生成的 wixlib 没有将组件绑定到 wixlib。在 VS2008/wix3.0 中,在 Build 选项卡下的 library wixproj properties GUI 中有一个复选框,用于强制将文件绑定到库文件中。我在 VS2010/wix3.6 wixproj Build 选项卡中没有看到这个。

此移动在哪里和/或如何强制绑定文件?这对于我们的模块化应用程序如何使用上游模块非常重要。

这个答案提到了相同的选项卡/复选框。

0 投票
2 回答
206 浏览

wix - 使用 regsvr 的自定义操作

我想在安装过程中对dll运行自定义操作。我没有找到清晰的描述。那么你将如何实现这个命令:

在安装期间在 Wix 中,或者在卸载期间可能 degister?

0 投票
1 回答
1209 浏览

wix - 如何在 WiX 中应用文件夹权限,保留现有权限,但不递归?

以下将递归应用(修改)权限,并尊重当前权限:

但是,我不想递归地应用它!

我希望它是非递归的,即只有那个文件夹,没有孩子。

(我相信较旧的元素清除了从父文件夹继承的权限,这意味着它对我的目的没有好处,因为我必须保留现有的权限)。

有没有办法告诉 PermissionsEx 不要递归地应用权限?我可以以某种方式组合 PermissionEx 和 Permission 节点以获得预期的效果吗?还是我唯一的选择是向 cacls.exe 发出自定义操作命令行调用?

0 投票
1 回答
1840 浏览

installation - WiX/Burn 安装 .NET 4 框架先决条件无法重新启动

我创建了一个需要安装 .NET 4 才能运行的自定义 UX。我已按照Burn的先决条件安装 .NET 4 的说明进行操作,并且当不需要在 .NET 之后重新启动时,这非常有效。但是,如果需要重新启动,我单击立即重新启动按钮,但出现以下错误:

蜡错误

日志文件包含以下内容:

为什么会这样?

0 投票
1 回答
990 浏览

wix - 以二进制形式查看 MSI 字符串

我想查看当 MSI 以二进制模式运行时显示在 UI 上的字符串/文本。

基本上我有本地化的 wxl 文件和本地化的 msi。想比较一下文字。

所以我的方法是查看要比较的字符串的二进制内容。谁能建议我可以使用哪些工具?

使用 orca 我可以看到字符串。但我想看看那些的二进制/十六进制值。

非常感谢

最好的问候,马克

0 投票
2 回答
1298 浏览

installation - 检查应用程序是否未运行

我正在开发一个 WiX 安装程序(我对此很陌生)并希望实现一种方法(如启动条件)来检查特定应用程序是否正在运行。如果它正在运行,则会弹出一条警告消息,显示关闭应用程序消息。我希望在欢迎屏幕之前进行此检查。

我该如何实施?一些工作示例真的会对我有很大帮助。