在Wix中有条件地卸载以前的版本

时间:2009-11-13 08:52:13

标签: wix conditional uninstall

我正在为一个用于调试嵌入式ARM内核(OpenOCD)的软件安装一个安装程序,这个安装程序会自动删除以前的版本 - 这很简单。但是,有时需要安装不止一个版本(每个版本都有自己的文件夹,所以这里没有冲突),因为各种(in-)兼容性问题等。

我正在尝试创建一个安装程序,它可以在功能树(或其他任何地方)中选择卸载(或不安装)以前的版本。

基本上有这个安装顺序:

<InstallExecuteSequence>
    <Custom Action="NewerVersionDetected" After="FindRelatedProducts">DOWNGRADE</Custom>
    <RemoveExistingProducts After="InstallFinalize"/>
</InstallExecuteSequence>

我知道可以通过在RemoveExistingProducts标记之间添加条件来使RemoveExistingProducts成为条件,但......条件应该是什么?有很多关于使功能有条件或有关操作系统版本和一些注册表项等条件的信息,但我没有找到任何有关“用户定义条件”的有用信息......

让我们说在功能树中有这个元素:

<Feature Id="UninstallOlderVersionFeature" Title="Uninstal previous versions" Level="1" Description="..."/>

如何根据此功能(或用户在安装过程中可以选择的任何其他方法 - 问题框或单独的窗口或其他任何方法)进行卸载以前的版本?

任何帮助(由我和安装程序的用户)赞赏,因为我在Wix和XML方面不是很好(我是一个嵌入式人员(;)

如果需要有关整个Wix文件的更多详细信息 - 请告诉我,我会发布相关位。

1 个答案:

答案 0 :(得分:2)

试试这个:

<RemoveExistingProducts After="InstallFinalize">
<![CDATA[&UninstallOlderVersionFeature=3]]>
</RemoveExistingProducts>

是否选择了该功能的状态。 “3”表示已选择安装功能。