我正在学习Windows安装程序xml(WIX)并且在我的代码中有一个条件,它检查在安装软件之前是否安装了软件A.我希望我的软件可以在安装了软件A时安装,但是当我卸载我的软件时,不应该触发这种情况。
捆绑包在安装过程中工作正常,这意味着如果已经安装了软件A,它将继续安装。但是如果软件-A根本没有安装,捆绑包将触发条件检查过程,显示条件消息并停止安装。我已经尝试了两个条件“未安装”和“已安装”,但即使在卸载过程中,条件检查过程仍会一直触发。这意味着无论进程是什么,bundle总是搜索同一个注册表。
安装程序的逻辑很简单,但我是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" />
我想知道如何在安装程序卸载时阻止检查过程。或任何其他建议将不胜感激。
既然您想要检测Bundle的状态,那么您应该看看Burn Built-in Variables。 WixBundleInstalled
将为您提供当前Bundle的安装状态。因此
WixBundleInstalled OR SoftwareAInstalled
如果已安装当前捆绑包,或者您正在执行捆绑包的全新安装且软件A已存在,则允许安装程序继续。
我现在没时间验证这一点,但看起来你可以使用:
Installed OR SoftwareAInstalled
我会将后一个属性大写,但是可以在命令行中设置它。我想它应该适用于你拥有的东西。现在无法测试。提示:记得在silent installation mode
,modify
,repair
,self-repair
,uninstall
,major upgrade
,etc
进行测试......有很多要检查。
以前关于类似问题的一些答案: