WiX安装程序:如何删除旧的产品版本?

时间:2016-10-19 07:50:26

标签: wix windows-installer

开发人员创建了同一产品的3个安装程序并更改了UpgradeCode(是的,我知道,但确实如此)。

这些安装程序是提供给客户的,其中一些使用了这些版本。 现在我构建了新的安装程序,然后使用SuperOrca将记录添加到msi:使用不正确的升级代码卸载旧产品安装。

如何在WiX安装程序项目中执行此操作,每次构建msi后都不使用SuperOrca修补msi?

2 个答案:

答案 0 :(得分:4)

许多人似乎认为升级只能升级一次安装并且更改升级代码有问题,但这些都不是必需的。正如您使用SuperOrca所知,MSI文件中的升级表可以根据需要升级任意数量的已安装产品。

所以你需要做的就是添加升级元素,命名UpgradeCode值和你需要的版本范围。如果有三个产品可能已安装,则添加三个升级元素,将它们全部命名。你最终会得到一个升级表(在MSI中查看),就像你用Orca添加它们一样。

答案 1 :(得分:1)

升级代码不应更改。在安装程序中,如果要发布其他主要版本,则可以更改产品代码,但升级代码应在整个生命周期内与产品相同。在Wix中的产品标记内添加以下标记,以便在安装新版本时自动卸载以前的版本 -

<Product Id="*" UpgradeCode="PUT-GUID-HERE" ... >

<Upgrade Id="PUT-GUID-HERE">
  <UpgradeVersion OnlyDetect="no" Property="PREVIOUSFOUND"
     Minimum="1.0.0.0"  IncludeMinimum="yes"
     Maximum="99.0.0.0" IncludeMaximum="no" />
</Upgrade>

<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

由于OnlyDetect设置为No,wix将在InstallInitialize阶段后自动卸载以前的版本。 Wix将检测您在上面给出的示例范围内的版本 - 最小1.0到最大-99.0