16

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

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

升级到更高版本的 dotNetInstaller 似乎会中断auto_close_if_installed,因此情况更糟。

所以我的问题是:在一个可执行文件中部署这两个设置的当前最先进的技术是什么。Wix Burn会是一种选择吗?

我知道,在理想情况下,我只是为我的客户提供两个平台的单独安装程序。但他们恰好完全没有意识到这些微妙之处,他们中的大多数甚至不知道他们使用的是什么平台。

4

2 回答 2

27

在这种情况下,我肯定会使用 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 旨在处理的场景之一。

于 2013-04-13T07:45:19.563 回答
0

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

<Feature Id='X86' Level='1'>
  <ComponentRef Id='X86Feature1' />
  <Condition Level="1">NOT VersionNT64</Condition>
</Feature>
于 2013-02-25T23:06:31.050 回答