在安装和主要升级时卸载其他产品

时间:2020-01-08 15:35:27

标签: wix windows-installer

两个不同的产品具有不同的UpgradeCodes,并且存在于两个不同的设置(ProductA.msi和ProductB.msi)中。两者都有版本N。

现在将ProductB 合并到ProductA版本N + 1。也就是说,ProductB的文件将由ProductA的安装程序提供,并提供给ProductA的安装位置。

安装ProductA版本N + 1的用户不希望再安装ProductB(甚至可能导致问题)。因此,在安装ProductA或将其升级到版本N + 1时,应删除ProductB(任何版本)。如何在ProductA的设置中完成此操作?

这类似于此问题,但这是为了在卸载而不是在安装/升级时删除其他产品。 Wix - uninstall different product

2 个答案:

答案 0 :(得分:1)

将ProductB的升级代码添加到ProductA中新的Upgrade element。然后,在安装ProductA N + 1时,升级将同时删除ProductA N和ProductB。

答案 1 :(得分:1)

WiX示例 :这是Bob Arnson描述的技术示例: Adding entries to MSI UpgradeTable to remove related products 。确保在设置中保留此条目以用于将来的版本。它需要保留在那里,因为人们在升级时可以跳过几个版本?

在线示例 :请参见上面的链接以获取完整示例。

<!-- Older Product Line 1: Upgrade Code -->
<Upgrade Id="{11111111-1111-1111-1111-000000000000}">
   <UpgradeVersion Property="PRODUCTLINE1" IncludeMinimum="yes" Minimum="0.0.0" />
</Upgrade>

调试主要升级 WIX does not uninstall older version-重大升级失败原因的临时列表。


组件引用 :合并设置可能会导致某些组件引用错误。我想你知道。这可能表现为安装后丢失文件或升级方案中的“某些故障”。错误的注册,滞留的文件,您要命名-只是提及。

  • 组件GUID :以下是有关组件引用和组件GUID的一些背景信息:Change my component GUID in wix?

  • 经验法则 :如果使用新组件GUID将旧文件安装到新位置,则应该没问题。要检查的事情:共享文件,COM服务器,任何在机器范围内注册,服务,COM Interop,COM +等不正常的事情……许多设置都很简单,others are not

  • 自定义操作 :迁移任何自定义操作都可能导致严重的问题-尤其是在升级方案中,如果序列具有复杂的排序和条件,则无法确定这些操作实际在何时运行。

相关问题