WiX阻止x86和x64并排安装

时间:2015-04-24 10:56:29

标签: wix

过去我们只提供了x86版本的工具套件,但从下一个版本开始,我们还想为我们的工具套件子集提供x64版本。我已经更新了我们的MSI项目,为x86构建了一个版本,为x64构建了一个版本。 MSI文件包含以下内容:

  • x86,Everything x86。
  • x64,x86版本中的所有内容+可用作x64的子集。

我想阻止x86和x64 MSI在x64平台上并排安装。我怎么做?或者我在提供x86和x64版本的产品时采取了错误的方法?我想我可以在x86 MSI中包含一个条件,它不允许在x64平台上安装但是这被认为是坏的吗?

Atm两个MSI共享相同的 UpgradeCode (我读过这个是一个好主意,如果我们之前只有一个x86版本,并希望它被最新的x86和x64版本升级发布)和 ProductCode PackageCode 都设置为*。

我感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以让x64安装程序在32位注册表中写入一个注册表项,说明“我已安装”,其他任何有用的信息,并使用搜索和启动条件。或者使UpgradeCodes不同 - 无论如何它们都是不同的产品线 - 并使用x86设置中的Upgrade元素搜索(UpgradeVersion OnlyDetect)x64版本的UpgradeCode。

这会在x64安装后阻止x86,但不会阻止首先安装x86,但为此你可以在x64安装中包含x86 UpgradeCode,以便x64安装将升级并删除x86。

为防止在x64上安装x86,启动条件(如“Not VersionNT64”)应该可以正常工作 - 文档说VersionNT64仅在x64 OS系统上定义。

答案 1 :(得分:1)

FWIW,我会给每个MSI一个不同的UpgradeCode。如果希望x64取代x86,则x64安装可以使用升级表条目来删除x86 UpgradeCode。

您可能还需要考虑使用刻录bootstarpper来处理x86 vs x64,这样您的用户就不必考虑哪个是正确的选择。我不知道你的MSI有多大。