【问题标题】:How to deploy 64-bit and a 32-bit Windows Installer package as a single setup?如何将 64 位和 32 位 Windows Installer 包部署为单个安装程序?
【发布时间】:2012-10-20 07:04:08
【问题描述】:

我需要部署针对 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 可以选择吗?

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

【问题讨论】:

  • 我过去曾为此使用过 Burn,但感觉有点矫枉过正。我很想看看其他人的想法。
  • @Brice:问题是,Burn 似乎也不是很可靠。使用它部署了 Visual Studio Update 1 CTP 3,但由于 Burn 无法在我的计算机上安装:Microsoft Connect 766849
  • 我建议为此刻录,一个包标有 InstallCondition="NOT VersionNT64",另一个标有 InstallCondition="VersionNT64"。使用刻录,您可以创建单个 exe 包,用户不必运行正确的包。
  • @DanielGehriger 您指向的连接问题是 Visual Studio 团队编写的 WPF Bootsrapper 应用程序中的问题。 Burn 引擎工作正常,这是他们代码中的一个错误。识别问题并不容易,因为问题正在破坏他们的 UI。 :)

标签: wix windows-installer bootstrapping dotnetinstaller


【解决方案1】:

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

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

【讨论】:

  • Id 既没有投赞成票也没有投反对票。但是你认为你仔细阅读了这个问题吗?目标是将两个 MSI 与一个引导程序结合起来,不是吗?
【解决方案2】:

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

【讨论】:

  • 是的,完全正确。这就是我最终所做的。我会接受您的回答,以供将来参考。
  • 对于 WiX 3.7,似乎 MsiPackage 上不允许使用 Condition 属性。是 3.8 中即将出现的东西还是最近发生了变化?
  • 示例中的错字。 Condition 应该是 InstallCondition
  • 有没有一种好方法可以让 Visual Studio 在构建过程中同时创建 32 位和 64 位 msi?
猜你喜欢
  • 2021-05-25
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
相关资源
最近更新 更多