2012-10-30 55 views
13

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

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

升级到dotNetInstaller的更高版本似乎打破auto_close_if_installed,所以它更糟糕。

所以我的问题是:当前的技术状态是在单个可执行文件中部署这两个设置。请问Wix Burn是否是一个选项?

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

+2

我以前用过这个烧伤,但感觉有点像矫枉过正。我很想看看其他人的想法。 – bricelam

+1

@Brice:事情是,烧伤似乎也不是很可靠。 Visual Studio Update 1 CTP 3使用它进行部署,并且由于Burn而无法在我的计算机上安装:[Microsoft Connect 766849](https://connect.microsoft.com/VisualStudio/feedback/details/766849/visual- studio-2012-update-1-ctp-3-crash-installation-during) –

+4

我建议为此烧录,一个包装上标有InstallCondition =“NOT VersionNT64”,另一个InstallCondition =“VersionNT64”。使用刻录可以创建一个exe包,用户不必运行正确的包。 – Neil

回答

21

我肯定会在这种情况下使用刻录。类似于以下内容:

<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旨在处理的情景之一。

+2

是的,确切地说。这就是我最终做的。我会接受你的答案,以备将来参考他人。 –

+1

对于WiX 3.7,似乎MsiPackage上不允许使用Condition属性。事情是3.8还是最近发生了变化? –

+1

示例中的错字。 'Condition'应该是'InstallCondition'。 –

0

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

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

为什么downvote? – dvallejo

+0

我没有投票上或下。但是你认为你仔细阅读了这个问题吗?目标是将两个MSI与引导器相结合,不是吗? – harper

相关问题