如何防止在卸载过程中运行安装程序时检测到WIX条件?

时间:2019-04-12 11:31:54

标签: wix installer uninstall

我正在学习Windows安装程序xml(WIX),并且我的代码中有一个条件,该条件可以在安装软件之前检查是否已安装软件-A。 我希望可以在安装软件-A后安装我的软件,但是在卸载软件时,不应触发此情况。

在安装过程中,捆绑软件可以正常工作,这意味着,如果已经安装了软件-A,它将继续安装。但是,如果根本未安装软件-A,则捆绑软件将触发条件检查过程,显示条件消息并停止安装。我尝试了两个条件“未安装”和“已安装”,但是即使在卸载过程中,条件检查过程仍始终触发。这意味着无论捆绑程序是什么过程,总会搜索相同的注册表。

安装程序的逻辑很简单,但是我是Windows安装程序xml技术的初学者。

<bal:Condition Message="Software-A is Required.">
   <![CDATA[NOT Installed OR SoftwareAInstalled]]>
</bal:Condition>

<util:RegistrySearch Id="SoftwareAInstalled"
                 Root="HKLM"  
                 Key="SOFTWARE\SoftwareA\"
                 Variable="SoftwareAInstalled"
                 Result="exists" />

我想知道在安装程序正在卸载时如何防止检查过程。否则,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

由于要检测捆绑软件的状态,因此应查看Burn Built-in VariablesWixBundleInstalled将为您提供当前Bundle的安装状态。因此

WixBundleInstalled OR SoftwareAInstalled

如果已经安装了当前捆绑软件或正在执行捆绑软件的全新安装并且软件A已经存在,则将允许安装程序继续运行。

答案 1 :(得分:0)

我现在没有时间进行验证,但是您似乎可以使用:

Installed OR SoftwareAInstalled

我会将后一个属性大写,但是可以在命令行中设置它。我想它应该与您所拥有的一起工作。目前无法测试。提示:请记住要在 silent installation mode modify repair { {1}} self-repair uninstall major upgrade ...很多检查。

关于类似问题的一些先前答案: