我需要部署针对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可以选择吗?
我知道在理想的世界里,我只是为我的客户提供单独的安装程序。但他们碰巧完全没有意识到这些微妙之处,他们中的大多数甚至都不知道他们正在使用什么平台。
答案 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>