2011-07-16 75 views
8

爲了檢查是否安裝.NET Framework,您可以使用此條件:不明白維克斯條件布爾邏輯

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

我不明白爲什麼兩個子條件(安裝,NETFRAMEWORK20)相結合,與一個OR運營商,而我希望這樣的事情,其中​​兩個條件相結合,與一個AND

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

哪裏是我誤會?

回答

13

由於<Condition>元件是用於安裝到的條件繼續(如果條件失敗僅使用的消息)。

所以,我們要繼續運行此安裝,如果要麼

  1. 包已經安裝。我們正在執行一些其他操作(例如移除),並且我們不需要檢查任何其他條件,或者,因爲第一個條件不成立,我們專門運行以安裝該軟件包,我們發現安裝了.NET Framework 2.0(或更好)。

如果<Condition>只是NETFRAMEWORK20,有人剛剛卸載了.NET框架,然後試圖卸載你的包,病情會失敗,並顯示消息「此應用程序需要.NET框架」 - 這將是非常煩人的。

+0

啊!如果安裝正在進行,我錯誤地認爲'INSTALLED = true'。感謝您的澄清。非常好的答案 – nabulke