Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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