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

7

我有一个基于WiX的MSI安装程序,安装了一些设备驱动程序,因此我有一个x64和一个x86版本。该软件包还具有.NET 3.5依赖项,因此我正在生成引导程序来执行此操作,然后启动MSI。我的问题是,是否有人知道如何创建一个引导程序,以检测它正在运行的平台并启动适当的MSI。我已经在谷歌上搜索了这样的解决方案,但到目前为止没有找到。谢谢!


我曾经读过,MSI是根据设计特性而定的平台特定的。 - Andriy Volkov
是的,这就是为什么有两个单独的MSI文件。但是,假设我要将其分发到CD上,并且有一个autorun.inf文件来启动我的“setup.exe”引导程序 - 目前我只能将其指向一个.msi文件,以便在放置先决条件后引导程序启动该文件。 - MattB
3个回答

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

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

我使用了一个检测平台的exe,创建了一个注册表键,我正在验证以决定要启动什么。

C#示例


0

dotNetInstaller 可能是您需要使用的工具:您可以创建不同的“安装”配置,只有在满足正确的操作系统、平台和语言组合时才会触发它们。您还可以将任何 MSIs、先决条件等嵌入安装可执行文件中,因此用户只需下载/运行单个文件即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接