从MSBuild引导程序启动x86或x64 MSI

时间:2009-10-02 00:16:51

标签: msbuild wix windows-installer bootstrapper

所以我有一个基于WiX的MSI安装了一些设备驱动程序,因此我有一个x64和x86版本。该软件包还具有.NET 3.5依赖性,因此我正在生成一个引导程序来执行此操作,然后启动MSI。我的问题是,是否有人知道一种创建引导程序的方法,该引导程序将检测其运行的平台并启动相应的MSI。我已经开始搜索这样的解决方案了,到目前为止还没有发现任何问题。谢谢!

3 个答案:

答案 0 :(得分:3)

不幸的是,Windows Installer需要一个单独的x86和x64的MSI包。

使用WiX v3.6 + Burn提供将两个软件包“捆绑”在一起的功能(由Burn可执行文件驱动)。你可以使用.wxs文件做一些有点像的事情:

<Bundle ...>
  <BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.RtfLicense' />

  <Chain>
    <MsiPackage InstallCondition='NOT VersionNT64' SourceFile='path\to\x86.msi' />
    <MsiPackage InstallCondition='VersionNT64' SourceFile='path\to\x64.msi' />
  </Chain>
</Bundle>

这刚刚开始划分Burn可以做的所有事情,但它展示了如何将两个架构包捆绑到一个安装体验中。

答案 1 :(得分:1)

如果你在启动msi之前安装.Net,你还可以包含一个用c#编写的exe来检测你的平台,然后将答案传递给你的引导程序。

我使用了检测平台的exe,创建了一个我正在验证决定启动内容的注册表项。

C# example

答案 2 :(得分:0)

dotNetInstaller可能就是您需要使用的:您可以创建不同的“设置”配置,只有在满足操作系统,平台和语言的正确组合时才会触发。您还可以将任何MSI,先决条件等嵌入到安装程序可执行文件中,以便用户只能下载/运行一个文件。