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

时间:2012-10-30 20:58:17

标签: wix windows-installer bootstrapping dotnetinstaller

我需要部署针对Windows 64位和32位的软件设置。我为每个平台都有两个单独的Windows Installer数据库(使用WiX创建),我使用dotNetInstaller将两者合并为一个安装引导程序可执行文件。

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

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

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

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

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:0)

您可以通过条件和功能在单个Wix中完成。

<Feature Id='X86' Level='1'>
  <ComponentRef Id='X86Feature1' />
  <Condition Level="1">NOT VersionNT64</Condition>
</Feature>