我有一个基于WiX的MSI安装程序,安装了一些设备驱动程序,因此我有一个x64和一个x86版本。该软件包还具有.NET 3.5依赖项,因此我正在生成引导程序来执行此操作,然后启动MSI。我的问题是,是否有人知道如何创建一个引导程序,以检测它正在运行的平台并启动适当的MSI。我已经在谷歌上搜索了这样的解决方案,但到目前为止没有找到。谢谢!
我有一个基于WiX的MSI安装程序,安装了一些设备驱动程序,因此我有一个x64和一个x86版本。该软件包还具有.NET 3.5依赖项,因此我正在生成引导程序来执行此操作,然后启动MSI。我的问题是,是否有人知道如何创建一个引导程序,以检测它正在运行的平台并启动适当的MSI。我已经在谷歌上搜索了这样的解决方案,但到目前为止没有找到。谢谢!
不幸的是,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 能做的一小部分,但它展示了如何将两个架构包捆绑成一个单一的安装体验。
如果在启动msi之前安装.Net,您还可以包含一个用C#编写的exe来检测您的平台,然后将答案传递回您的引导程序。
我使用了一个检测平台的exe,创建了一个注册表键,我正在验证以决定要启动什么。
dotNetInstaller 可能是您需要使用的工具:您可以创建不同的“安装”配置,只有在满足正确的操作系统、平台和语言组合时才会触发它们。您还可以将任何 MSIs、先决条件等嵌入安装可执行文件中,因此用户只需下载/运行单个文件即可。