不了解WiX条件布尔逻辑

nab*_*lke 8 wix

为了检查是否安装了.NET框架,您可以使用以下条件:

<Condition Message="This application requires .NET Framework">
    <![CDATA[Installed OR NETFRAMEWORK20]]>
</Condition>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么两个子条件(Installed,NETFRAMEWORK20)与一个OR运算符组合,而我会期望这样的情况,其中两个条件都与AND:

<![CDATA[Installed AND NOT NETFRAMEWORK20]]>
Run Code Online (Sandbox Code Playgroud)

我的误会在哪里?

Dam*_*ver 15

因为<Condition>元素是安装程序继续的条件(并且仅在条件失败时才使用该消息).

所以,我们要继续运行此安装,如果两种:

  1. 软件包已安装.我们正在执行其他一些操作(例如,删除),我们无需检查任何其他条件,或者,
  2. (因为第一个条件不正确)我们专门运行以安装软件包,并且我们检测到安装了.NET Framework 2.0(或更高版本).

如果<Condition>只是NETFRAMEWORK20,有人刚刚卸载了.NET Framework,然后尝试卸载您的软件包,则该条件将失败并显示消息"此应用程序需要.NET Framework" - 这将非常烦人.