简体   繁体   English

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

[英]How to deploy 64-bit and a 32-bit Windows Installer package as a single setup?

I need to deploy a software setup targeting both, Windows 64bit and 32bit. 我需要部署针对Windows 64位和32位的软件设置。 I have two separate Windows Installer databases (created with WiX ) for each platform, and I am using dotNetInstaller to combine both into a single installation bootstrapper executable. 我为每个平台都有两个独立的Windows Installer数据库(使用WiX创建),我使用dotNetInstaller将两者合并为一个安装的bootstrapper可执行文件。

I'm currently using version 1.10 of dotNetInstaller and set auto_close_if_installed=True , because I want to comletely hide the bootstrapper from the user. 我目前正在使用dotNetInstaller的1.10版并设置auto_close_if_installed=True ,因为我想完全隐藏用户的引导程序。 Still, dotNetInstaller insists on displaying a sill progress bar window while my installer is running, and doesn't really auto-close. 尽管如此,dotNetInstaller坚持在我的安装程序运行时显示窗台进度条窗口,并且不会自动关闭。 The user needs to confirm a dialog box telling him that the application was successfully installed. 用户需要确认一个对话框,告诉他应用程序已成功安装。 But the real deal-breaker is that it doesn't support Windows 8 (yet). 但真正的交易破坏者是它还不支持Windows 8。

Upgrading to a later version of dotNetInstaller seems to break auto_close_if_installed , so it's even worse. 升级到更高版本的dotNetInstaller似乎打破了auto_close_if_installed ,所以情况更糟。

So my question is: what is the current state of the art to deploy both setups in a single executable. 所以我的问题是:在一个可执行文件中部署这两个设置的当前技术水平是什么。 Would Wix Burn be an option? Wix Burn会成为一个选择吗?

I know that in an ideal world, I simply provide my customers with separate installers for either platform. 我知道在理想的世界里,我只是为我的客户提供单独的安装程序。 But they happen to be completely unaware of such subtleties, most of them don't even know what platform they are using. 但他们碰巧完全没有意识到这些微妙之处,他们中的大多数甚至都不知道他们正在使用什么平台。

I would definitely use Burn in this scenario. 在这种情况下我肯定会使用Burn。 Something akin to the following: 类似于以下内容:

<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>

This is exactly one of the scenarios Burn was designed to handle. 这正是Burn旨在处理的场景之一。

You can do it in a single Wix via Conditions and Features. 您可以通过条件和功能在单个Wix中完成。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM