将MSI捆绑到不同平台的最佳方法是什么?

时间:2012-06-26 16:35:06

标签: windows-installer bundle cpu-architecture

我有两个MSI安装程序,用于x86和x64体系结构。我想将它们捆绑到一个统一的安装程序中,而不是根据机器的架构选择正确的安装程序并启动它。

我在dotNetInstaller上取得了一些成功,但它只是创建了一个额外的exe文件,msi必须作为单独的文件包含在内,所以这不合适。

我简直不敢相信这是一项非常罕见的任务,但是我找不到其他任何东西,有人能指出我想要一个好的捆绑/自举程序吗?

2 个答案:

答案 0 :(得分:2)

Advanced Installer有一个名为“Convert EXE to MSI”的功能,可以用来包装你的MSI包。

Advanced Installer的另一个选项是在Prerequisites page中简单地将两个MSI包添加为基于特征的先决条件。

答案 1 :(得分:1)

我使用NSIS,它是免费的,最小的,可编写脚本的,并提供良好的压缩。

我的脚本如下:

!include x64.nsh

AutoCloseWindow true
SilentInstall silent
SetCompressor /SOLID lzma

Section
Initpluginsdir
${If} ${RunningX64}
  File "/oname=$pluginsdir\inst.msi" "64bit.msi"
${Else}
  File "/oname=$pluginsdir\inst.msi" "32bit.msi"
${EndIf}
ExecWait '"msiexec" /i "$pluginsdir\inst.msi"'
SectionEnd

这将编译为启动正确的MSI安装程序但没有额外UI的安装程序。