【发布时间】:2016-05-21 17:38:29
【问题描述】:
我有一个 wix 安装程序,用于安装不同版本的软件。允许并行安装相同的软件(不同版本)。 wix 产品代码为“*”,因此始终是重大升级。
现在,我需要有选择地卸载以前版本的软件。为此,我在 UpgradeVersion 标签中定义了版本范围?
<Upgrade Id="ID">
<UpgradeVersion Minimum="0.0.0.0" Maximum="0.5.0.0" IncludeMinimum="yes" IncludeMaximum="no" Property="FORCEREMOVEOLDVERSION" />
<UpgradeVersion Minimum="0.6.0.0" Maximum="0.7.0.0" IncludeMinimum="yes" IncludeMaximum="yes" Property="SELECTIVELY_UNINSTALL" />
<UpgradeVersion Minimum="0.8.0.0" Maximum="1.5" IncludeMinimum="yes" IncludeMaximum="yes" Property="OLDERVERSIONDETECTED" />
</Upgrade>
这非常有效。但是,当我必须有选择地卸载 0.6 - 0.7 范围时,我如何有一个单独的操作来执行此操作,因为只有一个 RemoveExistingProducts 标记。
<InstallExecuteSequence>
<RemoveExistingProducts Overridable="no" Before="InstallInitialize" />
</InstallExecuteSequence>
您能否建议一种可行的方法来检查“SELECTIVELY_UNINSTALL”标志并删除此范围(0.6-0.7),同时自动删除其他以前的版本?
谢谢。
【问题讨论】:
-
我认为问题在于那些已安装的产品都具有相同的升级代码,并且我相信 Windows Installer 会选择其中一个已安装的产品来卸载,而不是全部卸载。如果产品并行安装并且需要选择性升级,那么它们都需要不同的升级代码。然后,您可以在任何升级安装中使用升级元素来决定要替换哪些旧产品。
标签: wix windows-installer