如何将64位和32位Windows Installer程序包部署为单个安装程序?

Dan*_*ger 14 bootstrapping windows-installer wix dotnetinstaller

我需要部署针对Windows 64位和32位的软件设置.我为每个平台都有两个独立的Windows Installer数据库(使用WiX创建),我使用dotNetInstaller将它们组合成一个安装的bootstrapper可执行文件.

我目前正在使用dotNetInstaller的1.10版并设置auto_close_if_installed=True,因为我想完全隐藏用户的引导程序.尽管如此,dotNetInstaller坚持在我的安装程序运行时显示窗台进度条窗口,并且不会自动关闭.用户需要确认一个对话框,告诉他应用程序已成功安装.但真正的交易破坏者是它还不支持Windows 8.

升级到更高版本的dotNetInstaller似乎打破了auto_close_if_installed,所以情况更糟.

所以我的问题是:在一个可执行文件中部署这两个设置的当前技术水平是什么.Wix Burn会成为一个选择吗?

我知道在理想的世界里,我只是为我的客户提供单独的安装程序.但他们碰巧完全没有意识到这些微妙之处,他们中的大多数甚至都不知道他们正在使用什么平台.

Rob*_*ing 25

在这种情况下我肯定会使用Burn.类似于以下内容:

<Wix>
  <Bundle...>
    <BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.HyperlinkLicense' />

    <Chain>
      <MsiPackage InstallCondition='NOT VersionNT64' SourceFile='path\to\x86.msi' />
      <MsiPackage InstallCondition='VersionNT64' SourceFile='path\to\x64.msi' />
    </Chain>
  </Bundle>
 </Wix>
Run Code Online (Sandbox Code Playgroud)

这正是Burn旨在处理的场景之一.

  • 对,就是这样.这就是我最终做的事情.我会接受你的回答,以便将来参考别人. (2认同)
  • 有没有一种好方法可以让 Visual Studio 在构建过程中同时创建 32 位和 64 位 msi? (2认同)