问题标签 [wix3.11]

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 投票
2 回答
1551 浏览

wix - WiX Checkbox 属性仅在给定默认值时才有效

据我了解,在 WiX 中,如果属性不为空,则会检查一个复选框。因此,为了将复选框默认为“已选中”,必须在复选框之外定义属性。

鉴于此,我有一个复选框,允许用户选择是否要将快捷方式添加到桌面。最初它被设置为默认检查,但我现在正在尝试更改它,以便默认情况下未选中。但是,当我删除属性定义以使其不被检查时,该选项不再起作用。无论复选框是否选中,安装程序都不会添加快捷方式。下面是最初定义复选框的方式:

桌面快捷方式功能定义如下:

以上方法有效,但一旦我删除<Property Id="ADD_DESKTOP_SHORTCUT" Value="1" />它,无论复选框选择如何,都不再添加快捷方式。

我也尝试过定义属性,但改变它的值是这样的:

这也不起作用。我得到一个错误。(错误代码 2892)

谁能告诉我为什么删除默认值会导致选项停止工作?和/或如何让它工作?

0 投票
2 回答
3200 浏览

wix - 如何制作 64 位 MSI?

我已经指定:

  • -arch x64运行时candle.exe
  • Platform=x64Package
  • ProgramFiles64Folder作为Directory安装东西的ID。

而且,当应用程序安装后,它会转到C:\Program Files (x86).

还有一些其他wxs的由heat.exe. 我尝试在对 的调用中添加-platform x64和,但没有任何区别。-platform win64heat.exe

我读

我想我正在做那里描述的一切。

我错过了什么?

我想出了一个看起来像这样的最小案例:

我像这样编译它:

它显然抱怨媒体表是空的:

但安装程序仍然生成,它仍然指向C:\Program Files (x86)

在此处输入图像描述

完整的.wxs样子是这样的:

生成的 MSI 的摘要信息如下所示(GUID 已更改):

在此处输入图像描述

并且目录指向使用ProgramFiles64Folder. 我找不到任何错误:

在此处输入图像描述

%ProgramFiles%仍然指向正确的地方:

而且我也以相同的方式在两台不同的计算机上失败了(安装到C:\Program Files (x86))。

如果我将 更改DirectoryProgramFilesFolder而不是ProgramFiles64Folder,那么,我会得到预期的错误:

以防万一,我打开注册表编辑器并删除了所有提及C:\Program Files (x86)\X LCC. 这没什么区别:(

我尝试为目录指定一个名称,作为一个实验:

这也没有什么区别。

0 投票
3 回答
1260 浏览

wix - 其他安装正在进行中 挂起我的 Wix 安装

我正在创建一个 WIX 安装程序引导程序(DisplayInternalUI="yes"在 msipackage 上),但是当同时发生其他安装时它会挂起。

如果我使用 msiexec 自行运行 MSI 文件,我会收到一条 Windows 安装程序错误 "Another installation is in progress"消息(即 1500 MSI 错误消息)——我认为这是挂起我的安装。

因此,我正在做的是查看是否可以_MSIExecute mutex在用户按下安装按钮之后(即在 之前ProgressDlg)锁定。如果我可以锁定 Mutex,则没有其他安装正在进行 - 因此继续安装(即执行阶段)是安全的。如果不是,安装程序会显示取消按钮(并且没有其他按钮) - 因此安装将不会继续。

我想知道是否有办法防止"Another installation is in progress"错误消息(和其他消息)挂起安装程序。

0 投票
1 回答
337 浏览

wix - Wix ICE32:可能未对齐的外键

将合并模块 (Visual FoxPro Oledb V9) 添加到 wix 项目时,我收到以下错误消息:

使用 WiX 工具集 v3.11

我没有得到表中键与输出未对齐的指示。

我曾尝试在 Orca 中打开 vfpoledb.msm,但我似乎找不到任何看起来在字段大小方面不匹配的内容。

合并模块包含在:

此合并模块以前包含在 InstallShield 安装程序项目中,没有明显问题。我已经转换为使用 Wix,但似乎无法让安装程序使用包含的此合并模块进行构建(包括其他合并模块,例如 vc++ 运行时)。

我可以确认从 xml 中删除合并模块而不进行其他修改,然后允许安装程序构建(删除合并模块的 Merge 和 MergeRef 元素)。

我在互联网上搜索以尝试找到解决此问题的建议,我能找到的唯一页面建议使用 Orca 调整表架构,但如前所述,我没有得到有关导致问题的表的更多信息。

任何有关如何解决问题的建议,请引出有关 .msm 中违规表的更多信息。

0 投票
1 回答
439 浏览

installation - WiX 3.11.1 刻录引导程序无法提升

我们有一个使用 WiX 3.11.1 构建的设置,如果该 exe 没有以提升的权限启动(又名“以管理员身份运行”),那么我们将尝试以编程方式触发一个新进程,其中动词为“runas”,文件名为位置主 exe 的启动位置 (C:\Users\loggedin_username\AppData\Local\Temp{GUID}.cr\setup_name.exe)

但是通过在临时目录中创建带有以下消息的新日志文件,新触发的进程突然退出:

  • 错误 0x80070006:无法寻找文件的开头。
  • 错误 0x80070006:无法初始化引擎部分。
  • 错误 0x80070006:无法初始化引擎状态。

如果我们对 WiX 3.10.2 做同样的事情(以编程方式触发具有提升权限的新进程),那么它会创建一个新进程并且工作正常。

我想,从 WiX 3.11.1 开始,我们无法使用提升的权限启动相同的 exe。不确定 WiX 团队是否对安全性进行了任何重大更改。这是 WiX 3.11.1 中的已知问题吗?

我想要实现的只是在 HKLM\Microsoft\Windows\CurrentVersion\Uninstall 路径中添加/修改已安装设置注册表项的键值。在 Windows 10 及更高版本上,只有管理员可以完全访问 HKLM 路径。

如果使用“以管理员身份运行”选项启动 WiX 设置,一切正常,但如果用户没有使用该选项启动,我想以提升权限以访问 HKLM 路径但使用 WiX 3.11.1 以编程方式启动它失败。

关于如何实现的任何建议?任何帮助,将不胜感激。

谢谢

0 投票
0 回答
55 浏览

wix - WIX BootStapper 应该提示 Reboot 消息

我正在使用 WIX 引导程序来安装已安装的 MSI 的较新版本。问题是在安装过程中,如果任何进程正在使用我在 MSI 中的一个文件,我希望它们排队等待安装并提示一个消息框,告诉用户重新启动系统,以便排队的包将是重启后更新。

0 投票
0 回答
730 浏览

wix - Wix 安装程序不会建立在 VSTS 上

安装项目在 VS 2017 中本地构建,不会在 VSTS 中构建

创建目录“bin\Release\net471\”。创建目录“obj\Release\net471\”。
错误 HEAT5053:目录 '...\bin\Release' 不包含任何文件或子目录,并且由于没有保留空目录,因此没有什么可收获的。 heat.exe : 错误 HEAT5053: 目录 '...\bin\Release' 不包含任何文件或子目录,并且由于没有保留空目录,因此没有什么可收获的。完成构建项目“...\project.wixproj”(默认目标)——失败。

请注意,我故意截断了上面的路径。

我们正在使用 Hosted VS 2017 构建代理,并且在 VSTS 上安装了 Wix 3.11。

0 投票
1 回答
560 浏览

wix - 在 wix 安装程序脚本中有条件地设置快捷方式参数

我有以下 WIX 快捷方式。

我根据我正在构建的安装程序在我的构建脚本中设置 CmdLineArgs。我的一个构建脚本没有命令行参数,因此将 CmdLineArgs 设置为 null。

然后我得到这个错误:

错误 CNDL0006:Shortcut/@Arguments 属性的值不能为空字符串。如果不需要值,只需删除整个属性。

仅当 $(var.CmdLineArgs) 不为空时,如何有条件地设置参数?

0 投票
1 回答
91 浏览

wix - 从文件完整路径检查文件版本

在继续安装之前,我需要检查服务可执行版本。

我已经从注册表中读取了注册服务的完整路径:

之后,我尝试执行如下文件搜索:

这并没有给我带来结果。

我想问题出在我传递给DirectorySearch Path属性的值上。根据 Wix 文档Path,应使用“用户系统上的路径。绝对或相对于包含目录的路径”进行初始化。不幸的是,注册表中没有我可以读取服务安装目录的位置。这是 3d 派对组件。

这里有什么解决方案吗?重要时刻 - 禁止在我们的项目中使用自定义操作

0 投票
0 回答
154 浏览

wix - Wix 安装程序尝试执行不再存在的操作并给出错误 2721

我正在开发一个安装程序,我试图在其中添加自定义操作的执行。我希望在 installFiles 步骤之前执行 CA,但是在安装文件之后调用了 CA,这为时已晚。因此,我根据规范将 CA 调用替换到了正确的位置,但 CA 仍然在旧时刻被调用,即使我替换了它。我不知道为什么在旧的时刻仍然调用 CA,为了修复它,我做了一个完整的回滚,在所有地方删除了 CA,也删除了 CA 本身。在我搁置它们(我们正在使用源代码控制)之后,我什至对所有代码更改进行了完全撤消,但仍然调用了 CA,但由于 CA 不再存在,它现在给出了代码/编号 2721 的错误,

我现在多次检查并搜索(在 Visual Studio 中找到全部)代码,但我找不到尝试执行 CA 的代码部分。鉴于我对所有代码更改都进行了完全撤消,因此不应该有任何位置。然而安装程序继续尝试执行 CA。为了检查我是否正在执行正确的安装程序,我什至更改了标签的文本,我看到文本已更改,因此我正在执行正确的安装程序。

我最疯狂的猜测是发生了一些奇怪的部分缓存,但我不知道这是否真的发生以及如何解决。其他人有这个问题吗?谁能指出我如何解决这个问题的正确方向?