过去我们只提供了x86版本的工具套件,但从下一个版本开始,我们还想为我们的工具套件子集提供x64版本。我已经更新了我们的MSI项目,为x86构建了一个版本,为x64构建了一个版本。 MSI文件包含以下内容:
我想阻止x86和x64 MSI在x64平台上并排安装。我怎么做?或者我在提供x86和x64版本的产品时采取了错误的方法?我想我可以在x86 MSI中包含一个条件,它不允许在x64平台上安装但是这被认为是坏的吗?
Atm两个MSI共享相同的 UpgradeCode (我读过这个是一个好主意,如果我们之前只有一个x86版本,并希望它被最新的x86和x64版本升级发布)和 ProductCode 和 PackageCode 都设置为*。
我感谢任何帮助。
答案 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有多大。