Syntax för villkorsstyrd instruktion
I det här avsnittet beskrivs syntaxen för villkorssatser som används av funktionen MsiEvaluateCondition och åtgärden sekvenstabeller. Mer information finns i Exempel på syntax för villkorsstyrd instruktion.
Sammanfattning av syntax för villkorsstyrd instruktion
Den här tabellen och följande lista sammanfattar syntaxen som ska användas i villkorsuttryck.
Sak | Syntax |
---|---|
värde | symbol | literal | heltal |
jämförelseoperator | < | > | <= | >= | = | <> |
term | värde | värdejämförelseoperatorvärde | ( uttryck )| |
Boolesk-faktor | term | INTE term |
Boolesk term | Boolesk-faktor | Boolesk faktor OCH term |
uttryck | Boolesk term | Booleskt termuttryck ELLER uttryck |
symbol | egenskap | %environment-variable | $component-action | ?component-state | &funktionsåtgärd | !funktionstillstånd |
Symbolnamn och värden är skiftlägeskänsliga.
Miljövariabelnamn är inte skiftlägeskänsliga.
Literaltext måste omges av citattecken ("text").
Not
Literaltext som innehåller citattecken kan inte användas i villkorssatser eftersom det inte finns något escape-tecken för citattecken i literaltext. Om du vill göra en jämförelse med literaltext som innehåller citattecken bör den literala texten placeras i en egenskap. Om du till exempel vill kontrollera att egenskapen SERVERNAME inte innehåller några citattecken definierar du egenskapen QUOTES i tabellen Property med värdet " och ändrar villkoret till NOT SERVERNAME><QUOTES.
Icke-existerande egenskapsvärden behandlas som tomma strängar.
Numeriska flyttalsvärden stöds inte.
Operatorer och prioritet är desamma som i BASIC- och SQL-språken.
Aritmetiska operatorer stöds inte.
Parenteser kan användas för att åsidosätta operatorprioret.
Operatorer är inte skiftlägeskänsliga.
För strängjämförelser utför en tilde "~" som är prefix till operatorn en jämförelse som inte är skiftlägeskänslig.
Jämförelse av ett heltal med ett sträng- eller egenskapsvärde som inte kan konverteras till ett heltal är alltid msiEvaluateConditionFalse, förutom jämförelseoperatorn "<>", som returnerar msiEvaluateConditionTrue.
Åtkomstprefix
I följande tabell visas de prefix som ska användas för att komma åt olika system- och installationsinformation för användning i villkorsuttryck.
Symboltyp | Prefix | Värde |
---|---|---|
Installationsegenskap | (ingen) | Värdet för tabellen egenskap (egenskap). |
Miljövariabel | % | Värdet för miljövariabeln. |
Komponenttabellnyckel | $ | Komponentens åtgärdstillstånd. |
Komponenttabellnyckel | ? | Komponentens installerade tillstånd. |
Funktionstabellnyckel | & | Åtgärdstillstånd för funktionen. |
Funktionstabellnyckel | ! | Funktionens installerade tillstånd. |
Logiska operatorer
I följande tabell visas de logiska operatorerna i villkorsuttryck i prioritetsordningen hög till låg.
Operatör | Betydelse |
---|---|
Inte | Prefixet unary operator; invertera tillståndet för följande term. |
Och | SANT om båda termerna är TRUE. |
Eller | TRUE om någon av eller båda termerna är TRUE. |
Xor | SANT om båda termerna är SANNA, men inte båda. |
Eqv | SANT om båda termerna är TRUE eller båda termerna är FALSE. |
Busfrö | SANT om den vänstra termen är FALSE eller om den högra termen är TRUE. |
Jämförande operatorer
I följande tabell visas de jämförelseoperatorer som används i villkorsuttryck. Dessa jämförelseoperatorer kan bara förekomma mellan två värden.
Operatör | Betydelse |
---|---|
= | TRUE om det vänstra värdet är lika med det högra värdet. |
<> | TRUE om det vänstra värdet inte är lika med det högra värdet. |
> | SANT om det vänstra värdet är större än det högra värdet. |
>= | SANT om vänstervärdet är större än eller lika med högervärdet. |
< | SANT om vänstervärdet är mindre än det högra värdet. |
<= | TRUE om det vänstra värdet är mindre än eller lika med det högra värdet. |
Understrängsoperatorer
I följande tabell visas de understrängsoperatorer som används i villkorsuttryck. Understrängsoperatorer kan förekomma mellan två strängvärden.
Operatör | Betydelse |
---|---|
>< | TRUE om vänster sträng innehåller den högra strängen. |
<< | TRUE om vänster sträng börjar med den högra strängen. |
>> | TRUE om vänster sträng slutar med den högra strängen. |
Bitvis numeriska operatorer
I följande tabell visas de bitvis numeriska operatorerna i villkorsuttryck. Dessa operatorer kan förekomma mellan två heltalsvärden.
Operatör | Betydelse |
---|---|
>< | Bitwise AND, TRUE om de vänstra och högra heltalen har några bitar gemensamt. |
<< | Sant om de höga 16-bitars av det vänstra heltalet är lika med det högra heltalet. |
>> | Sant om de låga 16-bitars av det vänstra heltalet är lika med det högra heltalet. |
Värden för funktions- och komponenttillstånd
I följande tabell visas var det är giltigt att använda funktions- och komponentoperatorsymbolerna.
Operatorn <tillstånd> | Där den här syntaxen är giltig |
---|---|
$component-action | I tabellen Condition och i -sekvensen tabeller efter åtgärden CostFinalize. |
&funktionsåtgärd | I tabellen Condition och i -sekvensen tabeller efter åtgärden CostFinalize. |
!funktionstillstånd | I tabellen Condition och i -sekvensen tabeller efter åtgärden CostFinalize. |
?component-state | I tabellen Condition och i -sekvensen tabeller efter åtgärden CostFinalize. |
I följande tabell visas de värden för funktions- och komponenttillstånd som används i villkorsuttryck. Dessa tillstånd anges inte förrän MsiSetInstallLevel anropas, antingen direkt eller av åtgärden CostFinalize.
Stat | Värde | Betydelse |
---|---|---|
INSTALLSTATE_UNKNOWN | -1 | Ingen åtgärd ska vidtas för funktionen eller komponenten. |
INSTALLSTATE_ADVERTISED | 1 | Annonserad funktion. Det här tillståndet är inte tillgängligt för komponenter. |
INSTALLSTATE_ABSENT | 2 | Funktionen eller komponenten finns inte. |
INSTALLSTATE_LOCAL | 3 | Funktion eller komponent på den lokala datorn. |
INSTALLSTATE_SOURCE | 4 | Funktionen eller komponenten körs från källan. |
Villkorsuttrycket "&MyFeature=3" utvärderas till Sant endast om MyFeature ändras från dess aktuella tillstånd till tillståndet för att installeras på den lokala datorn, INSTALLSTATE_LOCAL.
Observera att du inte bör vara beroende av villkoret $Component 1=3 för att kontrollera om Component1 är lokalt installerat på datorn. Detta kan misslyckas om Component1 installeras av mer än en produkt. När Component1 har installerats lokalt av Product1 utvärderar installationsprogrammet villkoret $Component 1=3 som Falskt under installationen av Product2. Det beror på att installationsprogrammet avgör vilken version av komponenten som använder komponentens nyckelsökväg och markerar komponenten för installationen om dess version är större än eller lika med den installerade komponenten.
Observera att installationsprogrammet inte gör direkta jämförelser av datatypen Version i villkorsstyrda instruktioner. Du kan till exempel inte använda jämförande operatorer för att jämföra versioner som "01.10" och "1.010" i en villkorsstyrd instruktion. Använd i stället en giltig metod för att söka efter en version, till exempel beskrivs i Söka efter befintliga program, filer, registerposter eller .ini filposteroch ange sedan en egenskap.
Relaterade ämnen