如何为多个 MSI 文件构建引导程序?

Posted

技术标签:

【中文标题】如何为多个 MSI 文件构建引导程序?【英文标题】:How to build a bootstrapper for multiple MSI files? 【发布时间】:2013-06-21 13:05:54 【问题描述】:

我遇到了以下问题:使用 WiX 3.7,我构建了一个安装程序,它创建了几个本地化的 MSI 文件,例如:

..\bin\x86\Release\en-us\myProject.msi
..\bin\x86\Release\fr-fr\myProject.msi
..\bin\x86\Release\de-de\myProject.msi

此外,我创建了一个 Burn 引导程序项目,该项目应确保已安装 .NET 4.5:

...
<Chain>
    <PackageGroupRef Id="NetFx45Web"/>      
    <MsiPackage SourceFile="$(var.myProject.TargetPath)"></MsiPackage>
</Chain>
...

现在我预计 Burn 引导程序项目会创建:

..\bin\x86\Release\en-us\myProject.exe
..\bin\x86\Release\fr-fr\myProject.exe
..\bin\x86\Release\de-de\myProject.exe

但 MsiPackage 需要一个文件。

Burn 项目通常可以按我的预期工作吗?

如果不是这样,是否有可能知道创建的 MSI 文件的确切名称?我无法对 MSI 文件名进行硬编码,因为输出名称可能会有所不同。

【问题讨论】:

【参考方案1】:

我不认为这是可能的...如果您使用 MSBuild 或类似的东西,您可以在构建 MSI 包时构建它。

或者你可以使用一个简单的脚本来调用带有参数-dYOUR_VARIABLE=myProject.msi的candle.exe。

请参阅 Working with MSBuild 了解更多信息。

【讨论】:

以上是关于如何为多个 MSI 文件构建引导程序?的主要内容,如果未能解决你的问题,请参考以下文章

强制 WiX Burn 引导程序允许 MSI 文件使用 REINSTALLMODE=amus

如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?

如何为我的引导加载程序制作内核?

托管的 WiX 引导程序包

是否可以在引导程序中的检测阶段之前从链中的 MSI 文件中读取 MSI 属性?

如何强制 WiX 引导程序下载 MSI 包?