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

问题描述 投票:0回答:2

我正在学习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" />

我想知道如何在安装程序卸载时阻止检查过程。或任何其他建议将不胜感激。

wix installer uninstall
2个回答
1
投票

既然您想要检测Bundle的状态,那么您应该看看Burn Built-in VariablesWixBundleInstalled将为您提供当前Bundle的安装状态。因此

WixBundleInstalled OR SoftwareAInstalled

如果已安装当前捆绑包,或者您正在执行捆绑包的全新安装且软件A已存在,则允许安装程序继续。


0
投票

我现在没时间验证这一点,但看起来你可以使用:

Installed OR SoftwareAInstalled

我会将后一个属性大写,但是可以在命令行中设置它。我想它应该适用于你拥有的东西。现在无法测试。提示:记得在silent installation modemodifyrepairself-repairuninstallmajor upgradeetc进行测试......有很多要检查。

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

© www.soinside.com 2019 - 2024. All rights reserved.