使用 wix bundle 部署外部负载

Posted

技术标签:

【中文标题】使用 wix bundle 部署外部负载【英文标题】:Deployment of external payload with wix bundle 【发布时间】:2021-12-22 19:44:11 【问题描述】:

我们正在使用 Wix 来部署我们的应用程序。但是为了部署我们的应用程序,我们需要首先部署一个应用程序,这是我们应用程序的先决条件。该应用程序的设置作为外部有效负载提供给我们,我们将与我们的应用程序设置一起提供。

图 1:这个 .exe 是我们将用来安装应用程序的主要 wix 包。先决条件的设置位于“issetupprerequisites\9BA97839-8D57-467D-8FDF-487966F8A4C2”文件夹内。

图 2:这是我们的产品随附的 setup.exe,需要作为产品的先决条件进行安装。

但我们面临的问题是提供该必备应用程序 exe 的路径,因为该路径将是相对路径,因为不同的用户将从不同的位置安装它。

我们决定使用一个名为 [WixBundleOriginalSourceFolder] 的变量,但无法使用它。

图 3:以这种方式提供该 exe 的路径,以便我们可以在任何机器上安装来自我们的 wix 包的外部有效负载,但由于无法识别路径而未能这样做。

图 4:给出这个错误。

请指导我们如何为该外部有效负载 exe 提供路径,以便它可以在所有机器上正常运行。

注意:我们的项目使用的是 wix 3.10 版。

【问题讨论】:

【参考方案1】:

Payload/@Name 不是格式化值,因此您指定有一个文件夹字面名称为[InstallFolder]。如果您只使用issetupprerequisites\9BA97839-8D57-467D-8FDF-487966F8A4C2\setup.exe,它应该可以工作。

【讨论】:

是否得到相同的错误“系统找不到文件'SourceDir\issetupprerequisites\9BA97839-8D57-467D-8FDF-487966F8A4C2\setup.exe'。” 构建时需要该文件,以便对其进行哈希处理。该文件必须位于相对于您的 .wixproj 的路径中,或者您需要使用 Payload/@SourceFile 属性来指定它在构建时的位置。 但是如果我在构建时和构建时给出相对路径,它会成功,但是在其他系统上的 .exe 运行时呢,因为我的最终 exe 在不同的文件夹中并且有一个我想作为先决条件安装的 setup.exe 的不同相对路径。 这真的是一个不同的问题 - ***.com/a/29617883/628981。

以上是关于使用 wix bundle 部署外部负载的主要内容,如果未能解决你的问题,请参考以下文章

如何部署不同的 App.config 值(使用 WiX)

如何使用 Wix 和项目参考部署本机映像 (NGen)

使用组策略部署时 WIX MSI 自定义操作未运行

WiX Burn:如何将安装程序可执行文件部署到某个位置?

部署时 WIX MSI 应用程序未在用户帐户下启动应用程序

使用 WiX 工具集部署多个 WCF Web 服务 - 错误的 svc 文件