Syntaxe podmíněného příkazu
Tato část popisuje syntaxi podmíněných příkazů používaných funkcí MsiEvaluateCondition a akcí sekvenční tabulky. Další informace naleznete příklady syntaxe podmíněného příkazu.
Shrnutí syntaxe podmíněného příkazu
Tato tabulka a následující seznam shrnuje syntaxi, která se má použít v podmíněných výrazech.
Položka | Syntax |
---|---|
hodnota | symbol | literál | celé číslo |
operátor porovnání | < | > | <= | >= | = | <> |
semestr | value | hodnota relačního operátoru | ( výraz )| |
Logický faktor | termín | výraz NOT |
Boolean-term | Logický faktor | Boolean-factor A termín |
výraz | Boolean-term | Logický výraz OR |
symbol | vlastnost | %environment-variable | $component-action | ?component-state | &feature-action | !feature-state |
V názvech a hodnotách symbolů se rozlišují malá a velká písmena.
V názvech proměnných prostředí se nerozlišují malá a velká písmena.
Literál musí být uzavřený mezi uvozovkami ("text").
Poznámka
Text literálu obsahující uvozovky nelze použít v podmíněných příkazech, protože v textu literálu není žádný řídicí znak. Chcete-li provést porovnání s literálovým textem obsahujícím uvozovky, měl by být text literálu vložen do vlastnosti. Chcete-li například ověřit, zda vlastnost SERVERNAME neobsahuje žádné uvozovky, definujte vlastnost s názvem QUOTES v tabulce vlastností s hodnotou " a změňte podmínku na NOT SERVERNAME><QUOTES.
Neexistující hodnoty vlastností jsou považovány za prázdné řetězce.
Číselné hodnoty s plovoucí desetinou čárkou nejsou podporovány.
Operátory a priority jsou stejné jako v jazycích BASIC a SQL.
Aritmetické operátory nejsou podporovány.
Závorky lze použít k přepsání priority operátoru.
Operátory nerozlišují malá a velká písmena.
U porovnání řetězců provede tilda "~" předponou operátoru porovnání, které nerozlišuje malá a velká písmena.
Porovnání celého čísla s řetězcovou nebo hodnotou vlastnosti, kterou nelze převést na celé číslo, je vždy msiEvaluateConditionFalse, s výjimkou relačního operátoru "<>", který vrátí msiEvaluateConditionTrue.
Předpony přístupu
Následující tabulka uvádí předpony, které se mají použít pro přístup k různým informacím o systému a instalačním programu pro použití v podmíněných výrazech.
Typ symbolu | Předpona | Hodnota |
---|---|---|
Vlastnost Instalačního programu | (žádný) | Value of property (Property) table. |
Proměnná prostředí | % | Hodnota proměnné prostředí |
Klíč tabulky součástí | $ | Stav akce komponenty. |
Klíč tabulky součástí | ? | Nainstalovaný stav komponenty. |
Klíč tabulky funkcí | & | Stav akce funkce |
Klíč tabulky funkcí | ! | Nainstalovaný stav funkce. |
Logické operátory
Následující tabulka ukazuje logické operátory v podmíněných výrazech v pořadí s vysokou prioritou.
Operátor | Význam |
---|---|
Ne | Unární operátor předpony; invertuje stav následujícího termínu. |
A | PRAVDA, pokud jsou oba termíny PRAVDA. |
Nebo | PRAVDA, pokud jsou obě termíny PRAVDA. |
Xor | PRAVDA, pokud jsou oba termíny PRAVDA, ale ne oba termíny. |
Eqv | PRAVDA, pokud jsou oba termíny PRAVDA nebo oba termíny jsou NEPRAVDA. |
Šotek | PRAVDA, pokud je levý termín NEPRAVDA nebo pravý termín je PRAVDA. |
Srovnávací operátory
Následující tabulka ukazuje relační operátory používané v podmíněných výrazech. K těmto relačním operátorům může dojít pouze mezi dvěma hodnotami.
Operátor | Význam |
---|---|
= | PRAVDA, pokud je levá hodnota rovna pravé hodnotě. |
<> | PRAVDA, pokud levá hodnota není rovna pravé hodnotě. |
> | PRAVDA, pokud je levá hodnota větší než pravá hodnota. |
>= | PRAVDA, pokud je levá hodnota větší nebo rovna pravé hodnotě. |
< | PRAVDA, pokud je levá hodnota menší než pravá hodnota. |
<= | PRAVDA, pokud je levá hodnota menší nebo rovna pravé hodnotě. |
Operátory podřetězezece
Následující tabulka ukazuje operátory podřetězece používané v podmíněných výrazech. Operátory podřetězce mohou nastat mezi dvěma řetězcovými hodnotami.
Operátor | Význam |
---|---|
>< | TRUE, pokud levý řetězec obsahuje pravý řetězec. |
<< | TRUE, pokud levý řetězec začíná správným řetězcem. |
>> | TRUE, pokud levý řetězec končí správným řetězcem. |
Bitové číselné operátory
Následující tabulka ukazuje bitové číselné operátory v podmíněných výrazech. K těmto operátorům může dojít mezi dvěma celočíselnou hodnotou.
Operátor | Význam |
---|---|
>< | Bitové A, PRAVDA, pokud levá a pravá celá čísla mají nějaké společné bity. |
<< | Hodnota True, pokud se vysoké 16bitové hodnoty levého celého čísla rovnají pravému celočíselnému číslu. |
>> | Hodnota True, pokud se nízké 16bitové hodnoty levého celého čísla rovnají pravému celočíselnému číslu. |
Hodnoty stavu funkcí a součástí
Následující tabulka ukazuje, kde je platné používat symboly operátoru funkce a součásti.
> stavu operátoru < | Kde je tato syntaxe platná |
---|---|
akce $component | V tabulce podmínky a v tabulkách za akcí CostFinalize. |
akce funkce & | V tabulce podmínky a v tabulkách za akcí CostFinalize. |
!feature-state | V tabulce podmínky a v tabulkách za akcí CostFinalize. |
?component-state | V tabulce podmínky a v tabulkách za akcí CostFinalize. |
Následující tabulka ukazuje hodnoty stavu funkcí a součástí používané v podmíněných výrazech. Tyto stavy nejsou nastaveny, dokud není volána MsiSetInstallLevel, a to buď přímo, nebo CostFinalize akci.
Stát | Hodnota | Význam |
---|---|---|
INSTALLSTATE_UNKNOWN | -1 | U funkce nebo součásti není potřeba provádět žádnou akci. |
INSTALLSTATE_ADVERTISED | 1 | Inzerovaná funkce. Tento stav není k dispozici pro komponenty. |
INSTALLSTATE_ABSENT | 2 | Funkce nebo součást není k dispozici. |
INSTALLSTATE_LOCAL | 3 | Funkce nebo součást v místním počítači. |
INSTALLSTATE_SOURCE | 4 | Funkce nebo součást se spouští ze zdroje. |
Například podmíněný výraz "&MyFeature=3" se vyhodnotí jako True, pouze pokud se MyFeature mění z aktuálního stavu na stav instalace na místním počítači, INSTALLSTATE_LOCAL.
Mějte na paměti, že byste neměli záviset na podmínce $Component 1=3, abyste zkontrolovali, jestli je komponenta1 v počítači místně nainstalovaná. To může selhat, pokud je komponenta1 nainstalována více než jedním produktem. Po instalaci komponenty Component1 místně produktem Product1 instalační program vyhodnotí podmínku $Component 1=3 jako False během instalace produktu Product2. Důvodem je to, že instalační program určuje verzi komponenty pomocí cesty ke klíči komponenty a označí komponentu pro instalaci, pokud je její verze větší nebo rovna nainstalované komponentě.
Všimněte si, že instalační program nebude provádět přímé porovnání datového typu verze v podmíněných příkazech. Srovnávací operátory například nemůžete použít k porovnání verzí, jako jsou například 01.10 a 1.010 v podmíněném příkazu. Místo toho použijte platnou metodu k vyhledání verze, například popsané v Hledání existujících aplikací, souborů, položek registru nebo .ini položky souborua pak nastavte vlastnost.
Související témata