2011-07-16 6 views
8

W celu sprawdzenia, czy jest zainstalowany .NET framework można użyć tego warunku:nie rozumieją WiX warunki logiczną logiki

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

ja nie rozumiem, dlaczego te dwie podgrupy warunki (zainstalowana, NETFRAMEWORK20) łączy się z operatorem OR, raczej bym się spodziewał czegoś takiego, gdzie oba warunki są połączone z AND:

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

gdzie jest mój nieporozumienie?

Odpowiedz

13

Ponieważ element <Condition> jest warunkiem instalatorowi kontynuować (a komunikat jest używany tylko wtedy, gdy warunek nie).

Tak, chcemy kontynuować uruchomieniem tej instalacji, jeśli albo:

  1. Ten pakiet jest już zainstalowana. Wykonujemy inne działania (np. Usunięcie) i nie musimy sprawdzać żadnych innych warunków, lub,
  2. (Ponieważ pierwszy warunek nie był prawdziwy) Właśnie uruchamiamy pakiet, i wykryliśmy, że jest zainstalowany .NET Framework 2.0 (lub lepszy).

Jeśli <Condition> właśnie NETFRAMEWORK20, a ktoś po prostu odinstalować .NET Framework, a następnie starał się odinstalować pakiet, warunek nie powiedzie się i wyświetla się komunikat „Ta aplikacja wymaga .NET Framework” - co byłoby bardzo denerwujące.

+0

Ah! Błędnie pomyślałem, 'INSTALLED = true', jeśli instalacja jest obecnie w toku. Dziękuję za wyjaśnienie. Bardzo dobra odpowiedź – nabulke