当安装程序在卸载过程中 运行 时,如何防止 WIX 条件检测?
How to prevent the WIX condition detecting when the installer is running in the uninstalling process?
我正在学习 windows 安装程序 xml(WIX) 并且我的代码中有一个条件,它会在安装我的软件之前检查是否安装了软件 A。
我希望我的软件可以在安装软件-A 时安装,但是当我卸载我的软件时,不应触发这种情况。
bundle在安装过程中工作正常,这意味着如果已经安装了软件-A,它将继续安装。但如果软件-A 根本没有安装,bundle 将触发条件检查过程,显示条件消息并停止安装。我尝试了"NOT Installed"和"Installed"两种条件,但即使在卸载过程中,条件检查过程仍然会一直触发。这意味着无论进程是什么,包总是搜索相同的注册表。
安装程序的逻辑很简单,但我是 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" />
我想知道如何在安装程序卸载时阻止检查过程。或者任何其他建议将不胜感激。
我现在没有时间验证这个,但看起来你可以使用:
Installed OR SoftwareAInstalled
我会将后者大写 属性,但它可以在命令行中设置。我想它应该适用于你所拥有的。现在无法测试。提示:记得在silent installation mode
、modify
、repair
[中测试=40=], self-repair
, uninstall
, major upgrade
, etc
... 很多要检查。
之前类似问题的一些回答:
- How to add new framework version in Installment Requirement page of InstallShield?
- WIX Installer: Prevent installation on Windows Server 2012 R2(关于如何调试条件)
- Comment on the OR Installed construct
既然你想检测你的 Bundle 的状态,你应该看看 Burn Built-in Variables。 WixBundleInstalled
会给你当前Bundle的安装状态。因此
WixBundleInstalled OR SoftwareAInstalled
如果当前捆绑包已经安装,或者如果您正在执行捆绑包的全新安装并且软件 A 已经存在,将允许安装程序继续。
我正在学习 windows 安装程序 xml(WIX) 并且我的代码中有一个条件,它会在安装我的软件之前检查是否安装了软件 A。 我希望我的软件可以在安装软件-A 时安装,但是当我卸载我的软件时,不应触发这种情况。
bundle在安装过程中工作正常,这意味着如果已经安装了软件-A,它将继续安装。但如果软件-A 根本没有安装,bundle 将触发条件检查过程,显示条件消息并停止安装。我尝试了"NOT Installed"和"Installed"两种条件,但即使在卸载过程中,条件检查过程仍然会一直触发。这意味着无论进程是什么,包总是搜索相同的注册表。
安装程序的逻辑很简单,但我是 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" />
我想知道如何在安装程序卸载时阻止检查过程。或者任何其他建议将不胜感激。
我现在没有时间验证这个,但看起来你可以使用:
Installed OR SoftwareAInstalled
我会将后者大写 属性,但它可以在命令行中设置。我想它应该适用于你所拥有的。现在无法测试。提示:记得在silent installation mode
、modify
、repair
[中测试=40=], self-repair
, uninstall
, major upgrade
, etc
... 很多要检查。
之前类似问题的一些回答:
- How to add new framework version in Installment Requirement page of InstallShield?
- WIX Installer: Prevent installation on Windows Server 2012 R2(关于如何调试条件)
- Comment on the OR Installed construct
既然你想检测你的 Bundle 的状态,你应该看看 Burn Built-in Variables。 WixBundleInstalled
会给你当前Bundle的安装状态。因此
WixBundleInstalled OR SoftwareAInstalled
如果当前捆绑包已经安装,或者如果您正在执行捆绑包的全新安装并且软件 A 已经存在,将允许安装程序继续。