使用相同的升级代码卸载以前的版本但未知的产品代码(WIX)

时间:2014-01-29 11:54:25

标签: wix windows-installer

我们希望通过WIX在Windows上推出.net应用程序的新主要版本(V2.0)。

此推出将是每台机器的安装。 更新将是重大更新(例如V2.1,......)。此机制按预期工作。 产品更新后,它将被注册表中的新版本替换。 但它不会取代以前的版本(低于V2.0)。

此产品的早期版本(V1.0,V1.1,V1.5)也与WIX一起安装,但方式不同。 这些是每用户安装。产品安装程序具有已定义的ProductCode。 主要升级安装程序已设置,因此每个升级安装程序的产品代码都已更改。 每次新升级都会产生新的注册表项。所以升级后我们在注册表中有一个版本1.0,1.1,1.2(以及“删除程序”-dialog)

对于2.0版本,我想要清理所有内容。应删除所有版本1安装。 所有安装程序唯一常见的是升级代码。 不幸的是,在运行我的V2.x安装程序时,版本v1.x保持不变。

有没有办法通过Wix原生或自定义操作来实现这一目标?

2 个答案:

答案 0 :(得分:0)

Per:Major Upgrades

  

注意如果在每用户安装中安装了应用程序   上下文,还必须执行对应用程序的任何主要升级   使用每用户上下文。如果安装了应用程序   每台机器安装上下文,对应用程序的任何重大升级   还必须使用每台机器上下文执行。 Windows   安装程序不会在安装上下文中安装主要升级。

有一些方法可以通过引导程序清理实用程序来解决这个问题,但即使这样也行不通,因为每个用户的安装可能是使用不同的用户帐户完成的,并且超出了范围。

答案 1 :(得分:0)

如果你的UpgradeCode是相同的假设它应该工作:

  1. 您已经在前3位数中增加了ProductVersion。
  2. 您的新产品包含FindRelatedProduct,RemoveExistingProducts操作。换句话说,WiX升级内容或MajorUpgrade元素。
  3. 两个安装都在相同的上下文中(每个用户超过每个用户或每台机器上的每台机器)。
  4. 我不能从之前的帖子中看出这些是否正在发生。