首页 > 解决方案 > 当安装程序在卸载过程中运行时,如何防止 WIX 条件检测?

问题描述

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

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

标签: wixinstallationuninstallation

解决方案


由于您想检测 Bundle 的状态,您应该查看Burn Built-in VariablesWixBundleInstalled将为您提供当前 Bundle 的安装状态。所以

WixBundleInstalled OR SoftwareAInstalled

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


推荐阅读