不了解WiX条件布尔逻辑

时间:2011-07-16 08:19:56

标签: wix

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

<Condition Message="This application requires .NET Framework">
    <![CDATA[Installed OR NETFRAMEWORK20]]>
</Condition>

我不明白为什么两个子条件(Installed,NETFRAMEWORK20)与OR运算符组合在一起,而我希望这两个条件与AND结合使用:

<![CDATA[Installed AND NOT NETFRAMEWORK20]]>

我的误解在哪里?

1 个答案:

答案 0 :(得分:15)

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

因此,如果 ,我们希望继续运行此安装:

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

  3. 如果<Condition>只是NETFRAMEWORK20,有人刚刚卸载了.NET Framework,然后尝试卸载程序包,则情况会失败并显示消息“此应用程序需要.NET Framework “ - 这会很烦人。