问题标签 [wix3.8]

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 回答
1263 浏览

wix - WiX:如何混合手动生成和自动生成的 .wxs 内容?

我有一个包含大量文件的项目。在我们的软件版本之间,会添加新文件并删除一些文件。因此,在自动化我们的构建过程中,我想让 heat 自动生成一个.wxs文件(我们称之为files.wxs)。

但是还有一些手动生成的项目,比如<product>元素及其相关版本和<environment>我们需要设置的环境变量标签。这些永远不会改变(除了增加的版本号)。现在,我已经把所有这些都放在一个名为product.wxs.

我怎样才能最好地将它们组合成一个 .msi?我是否需要在文件中自动生成的每个片段的<component>元素内创建一个元素?如果是这样,那就违背了自动生成该文件的目的。我希望有另一种方法。<product>files.wxs

帮助!提前致谢。

0 投票
1 回答
2518 浏览

wix - WiX:如何允许自动生成的 ComponentGroup 自动生成 Guid

我使用 heat.exe 生成了一个 .wxs 文件,其中列出了我要安装的所有文件。我告诉 heat 把它们放在一个 ComponentGroup 中,这样我就可以从另一个(手工生成的).wxs 文件中引用它们。

但是,自动生成的文件规范如下所示:

由于源以“SourceDir”开头,因此在 light.exe 中出现以下错误:

知道我需要做什么才能使其正常工作吗?

0 投票
0 回答
823 浏览

wix - session.Message 框在通过 WiX Burn Bootstrapper 运行 MSI 时不可见

我正在尝试使用 Burn 连续运行多个 MSI,对于其中一个 MSI,我需要显示 UI,因为用户必须选择各种安装选项。

此安装程序还包含一个deferred Custom Action如果在执行操作时发生错误,将显示一条消息。

自定义操作中的 session.Message 调用:

问题

单独运行 MSI 时,该消息会正确显示(阻止安装,直到按下 OK)。但是,当通过 Burn 启动 MSI 时,安装程​​序会在调用显示消息时阻止,但不会弹出消息框。此时安装程序变得无响应,终止它的唯一方法是使用任务管理器。终止后,控制权返回到 Burn Bootstrapper 并出现消息框。

我是否在这里配置了错误,或者 WiX 根本不支持此功能(使用 DisplayInternalUI="yes" 时的 session.Message)?

0 投票
0 回答
693 浏览

c# - 如何生成 msbuild 引导程序以从 Web 安装 .net 4.0 先决条件

我花了几天时间寻找这个问题的解决方案,但没有任何实际结果。我有一个 WiX 3.8 项目来安装 Excel 加载项。该项目创建一个 MSI。我需要引导到这个项目,以检查是否安装了 .net framework 4.0 客户端,如果没有,则从 Web 安装它。

我发现这个问题有两种可能的解决方案:

  1. 创建一个 WiX 引导项目。
  2. 使用 Visual Studio 2012 附带的 MSBuild 引导程序。
  3. 运行构建后事件命令行

如果我选择第 1 项,则无法生成 MSI,这是一项要求。我想做第 2 或第 3 项,但找不到可以为下载先决条件创建必要的引导程序可执行文件的示例。

任何人都可以帮助我吗?

编辑 1 我已尝试执行第 1 项,如下所示。我可以使用 DisplayInternalUI="yes" 标志从我的 MSI 显示 UI,并使用主题和 WixBalExtensionExt 设置刻录 UI 的样式。

如果有办法将引导程序应用程序创建为 MSI,请告诉我。

否则,如果我需要使用 WiX 脚本中的条件来安装它,请确认我是否使用了 Visual Studio 的内置引导程序。这是如何运作的?

编辑 2 由于 WiX 引导程序只生成一个 EXE,它不符合我的要求。是否有实际示例说明如何将 .net 下载(而不是可再发行的)引导到 WiX 项目?有许多可再发行的示例,但没有一个可供下载的示例。

0 投票
1 回答
1416 浏览

wix - 如何根据您在 WIX 的 InstallScope 对话框中选择的设置 ALLUSERS?

我使用 WiX 3.8 创建安装包。我的安装程序应该启用每用户和每机器安装。我想通过使用单选按钮(“Everyone”和“Just me”)来实现这一点。

我在互联网上找到了一些参考资料:

选择当前用户或所有用户安装:添加用户界面,另一个 WiX 教程 - 第 2 部分 - 添加 UI 的一部分。将 ALLUSERS 属性设置为空字符串:Using WiX 3.0 to create per-user MSI that doesn't prompt for elevation on Windows Vista 如果我理解正确,我的安装程序应将 ALLUSERS 属性设置为 1 以进行每台机器安装并设置为“” (空字符串)用于每个用户的安装。

我的问题是无论我尝试什么,ALLUSERS 总是设置为 1。即使我根本没有设置它!

这是我尝试过的几件事:

安装范围.wxs

然后根据 ASSISTANCE_USERS 设置 ALLUSERS,但我不知道该放在哪里;

请告诉我如何修改这些代码来实现功能?

0 投票
1 回答
89 浏览

wix - Wix:在安装过程中显示已安装/失败的图标

在安装进度屏幕中,我为每个功能添加了(成功/失败)图标,在完成每个功能后,我需要显示成功/失败图标(在安装过程中)。

我试图使用控制事件(ActionData、ActionText、SetProgress、TimeRemaining、ScriptInProgress)但没有成功

请帮助解决这个问题。

谢谢,萨兰

0 投票
1 回答
631 浏览

wpf - 在 Managed Burn BootstrapperApplication 中包含图像

我正在使用刻录和自定义引导程序应用程序使用 wix 安装安装程序。一切正常,但我未能在我的应用程序 UI 中包含一个简单的图像。

我将图像包含到我的 UI 中,如下所示:

它在设计器中显示正常。我将界面减少到只有图像以排除其他可能的错误。

我还在捆绑包中添加了图像作为有效负载

如果我启动安装程序,该文件将出现在安装的临时文件夹中。

我尝试了不同的方法,例如将其添加为静态资源,更改图像的构建操作,但无法弄清楚如何正确执行。

0 投票
2 回答
1370 浏览

wix - 如何在 Wix 中设置 ProgramFilesFolder 子文件夹权限?

我正在使用 WiX 将应用程序安装到 Program Files 文件夹。我正在使用 util:XmlFile 更新 connectionStrings 元素,但出现错误“无法打开 XML 文件 C:\Program Files (x86)\developMENTALmadness\MainApp.exe.config 系统错误 -2147024786”。我正在尝试提升权限并设置目标文件和父文件夹的权限,但没有设置权限。

产品.wxs:

我使用 heat.exe 生成了组件列表并对其进行了修改(MainOutput.wxs):

0 投票
1 回答
1965 浏览

wix - 让 WiX / MSI 始终安装一些注册表,保留一些预先存在的注册表

我有一个 WiX 安装,还需要编写一些注册表项,我想知道是否有办法告诉 WiX/MSI

  • 仅在密钥尚不存在时才创建密钥
  • 始终创建/覆盖另一个密钥,即使它存在

我试过这样的事情:

在这里,我想总是用当前值覆盖Install DirectoryandProduct Version键,但我想保留其他设置,比如Default Language.

有没有办法做到这一点?

现在,当我在新系统上全新安装 1.0.0 时,它会创建注册表项。当我卸载它时,它们就消失了——到目前为止,一切都很好。

但是当我安装 v1.0.1 然后 - 没有卸载 v1.0.1 - 在此之上安装 v1.0.2 时,所有定义的注册表项都已更新并包含 WiX 脚本中定义的默认值 - 我手动进行的更改是歼灭。

0 投票
1 回答
555 浏览

wix - WiX 引导程序能否以最终用户期望的方式回滚主要升级?

我有一个引导应用程序,链中有几个msi 包。为方便起见,msi 软件包始终执行重大升级,在安装新版本之前完全删除产品。

如果在捆绑链中间的升级操作期间需要回滚,则先前执行的主要升级将被还原,从而导致不再安装受影响的产品。

这似乎是合理的,但可能不是最终用户所期望的。最好将这些产品恢复到以前安装的版本,而不是让某些产品被卸载。

我想知道他们是否是在不放弃主要升级策略的情况下解决此要求的一种方法。WiX 引导程序能否以最终用户期望的方式回滚主要升级?