Sdílet prostřednictvím


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.

použití vlastností v podmíněných příkazech