wix - 当安装程序在卸载过程中运行时,如何防止 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" />
我想知道如何在安装程序卸载时防止检查过程。或任何其他建议将不胜感激。
解决方案
由于您想检测 Bundle 的状态,您应该查看Burn Built-in Variables。WixBundleInstalled
将为您提供当前 Bundle 的安装状态。所以
WixBundleInstalled OR SoftwareAInstalled
如果当前捆绑包已经安装,或者您正在执行捆绑包的全新安装并且软件 A 已经存在,则将允许安装程序继续。
推荐阅读
- python - 通过 Python 连接到 TM1,在哪里可以找到“地址”和“端口”参数
- r - 使用阿森纳函数 tableby 创建多列并将特定的数字统计信息添加到一行
- flutter - 使用 ListView 和 ExpansionTile 构建页面
- javascript - MDBootstrap(引导的材料设计)冲突版本的反应
- groovy - groovy:在循环上迭代函数
- javascript - React Rest API 问题
- scala - 实现以 Pyspark 文件为源的 Scala 读取代码
- scala - 向 Sentry Logback 添加挂钩以清理数据
- azure - 在 Kusto 中使用联合和循环运算符将多个表合并为一个表
- excel - 我们如何使用 oledb 使用长度超过 256 个字符的字符串更新 excel 中的单元格