Megosztás a következőn keresztül:


Feltételes utasítás szintaxisa

Ez a szakasz a MsiEvaluateCondition függvény által használt feltételes utasítások szintaxisát, valamint a művelet sorrendtáblák. További információ: Feltételes utasítás szintaxisánakpéldái.

A feltételes utasítás szintaxisának összegzése

Ez a táblázat és az alábbi lista összefoglalja a feltételes kifejezésekben használandó szintaxist.

Cikk Szintaxis
érték szimbólum | literál | egész szám
összehasonlító operátor < | > | <= | >= | = | <>
kifejezés érték | érték összehasonlító operátor értéke | ( kifejezés )|
Logikai tényező kifejezés | NOT kifejezés
Logikai kifejezés Logikai tényező | Logikai tényező ÉS kifejezés
kifejezés Logikai kifejezés | Logikai kifejezés VAGY kifejezés
jelkép tulajdonság | %environment-variable | $component-action | ?component-state | &funkcióművelet | !feature-state

 

  • A szimbólumnevek és -értékek megkülönböztetik a kis- és nagybetűket.

  • A környezeti változók neve nem megkülönbözteti a kis- és nagybetűket.

  • A literális szöveget idézőjelek közé ("szöveg") kell tenni.

    Jegyzet

    Az idézőjeleket tartalmazó literális szöveg nem használható feltételes utasításokban, mert a literális szövegben nincs idézőjelek feloldó karaktere. Idézőjeleket tartalmazó literális szöveg összehasonlításához a literális szöveget egy tulajdonságba kell helyezni. Ha például ellenőrizni szeretné, hogy a SERVERNAME tulajdonság nem tartalmaz-e idézőjeleket, adjon meg egy IDÉZŐJELek nevű tulajdonságot a tulajdonságtáblában, " értékkel, és módosítsa a feltételt NEM KISZOLGÁLÓNÉV><IDÉZŐJELekre.

     

  • A nem létező tulajdonságértékek üres sztringekként vannak kezelve.

  • A lebegőpontos numerikus értékek nem támogatottak.

  • Az operátorok és az elsőbbség megegyezik az ALAP- és AZ SQL-nyelvekével.

  • Az aritmetikai operátorok nem támogatottak.

  • Zárójelek használhatók az operátorok elsőbbsége felülbírálásához.

  • Az operátorok nem érzékenyek a kis- és nagybetűkre.

  • Sztring-összehasonlítások esetén az operátorhoz tartozó tilde "~" előtag olyan összehasonlítást végez, amely nem megkülönbözteti a kis- és nagybetűket.

  • Egy egész szám és egy egész számmá nem konvertálható tulajdonságérték összehasonlítása mindig msiEvaluateConditionFalse, kivéve az "<>" összehasonlító operátort, amely msiEvaluateConditionTruead vissza.

Access-előtagok

Az alábbi táblázat azokat az előtagokat mutatja be, amelyekkel különböző rendszer- és telepítőinformációk érhetők el a feltételes kifejezésekben való használathoz.

Szimbólum típusa Előképző Érték
Telepítő tulajdonság (nincs) Tulajdonság értéke (Tulajdonság) tábla.
Környezeti változó % A környezeti változó értéke.
Összetevő táblakulcsa $ Az összetevő műveletállapota.
Összetevő táblakulcsa ? Az összetevő telepített állapota.
Funkciótáblakulcs & A funkció műveletállapota.
Funkciótáblakulcs ! A szolgáltatás telepített állapota.

 

Logikai operátorok

Az alábbi táblázat a feltételes kifejezések logikai operátorait mutatja be, magas és alacsony sorrendben.

Operátor Jelentés
Nem Előtag nem szereplő operátora; a következő kifejezés állapotát invertálta.
És IGAZ, ha mindkét kifejezés IGAZ.
Vagy IGAZ, ha vagy mindkét kifejezés IGAZ.
Xor IGAZ, ha bármelyik, de nem mindkét kifejezés IGAZ.
Eqv IGAZ, ha mindkét kifejezés IGAZ, vagy mindkét kifejezés HAMIS.
Manó IGAZ, ha a bal oldali kifejezés HAMIS, vagy a jobb oldali kifejezés IGAZ.

 

Összehasonlító operátorok

Az alábbi táblázat a feltételes kifejezésekben használt összehasonlító operátorokat mutatja be. Ezek az összehasonlító operátorok csak két érték között fordulhatnak elő.

Operátor Jelentés
= IGAZ, ha a bal oldali érték egyenlő a jobb értékkel.
<> IGAZ, ha a bal oldali érték nem egyenlő a jobb értékkel.
> IGAZ, ha a bal oldali érték nagyobb, mint a jobb.
>= IGAZ, ha a bal oldali érték nagyobb vagy egyenlő a jobb értékkel.
< IGAZ, ha a bal oldali érték kisebb, mint a jobb.
<= IGAZ, ha a bal oldali érték kisebb vagy egyenlő a jobb értékkel.

 

Részszűrési operátorok

Az alábbi táblázat a feltételes kifejezésekben használt részszűrési operátorokat mutatja be. Az összevonási operátorok két sztringérték között fordulhatnak elő.

Operátor Jelentés
>< IGAZ, ha a bal oldali sztring a jobb sztringet tartalmazza.
<< IGAZ, ha a bal oldali sztring a jobb sztringgel kezdődik.
>> IGAZ, ha a bal oldali sztring a jobb sztringgel végződik.

 

Bitenkénti numerikus operátorok

Az alábbi táblázat a feltételes kifejezések bitenkénti numerikus operátorait mutatja be. Ezek az operátorok két egész szám között fordulhatnak elő.

Operátor Jelentés
>< Bitenkénti ÉS, IGAZ, ha a bal és a jobb egész számokban vannak közös bitek.
<< Igaz, ha a bal egész szám magas 16 bites része egyenlő a jobb egész számokkal.
>> Igaz, ha a bal egész szám alacsony 16 bites része egyenlő a jobb egész számokkal.

 

Funkció- és összetevőállapot-értékek

Az alábbi táblázat azt mutatja be, hogy hol érvényes a funkció- és összetevő-operátorjelek használata.

Operátor <állapot> Ahol ez a szintaxis érvényes
$component művelet A Feltétel táblában és a sorrendben táblákban a CostFinalize művelet után.
&funkcióművelet A Feltétel táblában és a sorrendben táblákban a CostFinalize művelet után.
!feature-state A Feltétel táblában és a sorrendben táblákban a CostFinalize művelet után.
?component-state A Feltétel táblában és a sorrendben táblákban a CostFinalize művelet után.

 

Az alábbi táblázat a feltételes kifejezésekben használt funkció- és összetevőállapot-értékeket mutatja be. Ezek az állapotok csak akkor vannak beállítva, ha MsiSetInstallLevel közvetlenül vagy a CostFinalize művelettel hívja meg.

Állam Érték Jelentés
INSTALLSTATE_UNKNOWN -1 Nincs teendő a szolgáltatáson vagy az összetevőn.
INSTALLSTATE_ADVERTISED 1 Meghirdetett funkció. Ez az állapot nem érhető el összetevők esetén.
INSTALLSTATE_ABSENT 2 A funkció vagy összetevő nincs jelen.
INSTALLSTATE_LOCAL 3 Funkció vagy összetevő a helyi számítógépen.
INSTALLSTATE_SOURCE 4 A szolgáltatás vagy összetevő a forrásból fut.

 

A "&MyFeature=3" feltételes kifejezés például csak akkor számít Igaz értékre, ha a MyFeature az aktuális állapotáról a helyi számítógépre való telepítés állapotára változik, INSTALLSTATE_LOCAL.

Vegye figyelembe, hogy nem függhet az $Component 1=3 feltételtől annak ellenőrzéséhez, hogy az 1. összetevő helyileg telepítve van-e a számítógépen. Ez meghiúsulhat, ha az 1. összetevőt egynél több termék telepíti. Miután a Product1 helyileg telepítette az 1. összetevőt, a telepítő a $Component 1=3 feltételt hamisként értékeli a Product2 telepítése során. Ennek az az oka, hogy a telepítő az összetevő verzióját az összetevő fő elérési útján határozza meg, és megjelöli az összetevőt a telepítéshez, ha annak verziója nagyobb vagy egyenlő a telepített összetevővel.

Vegye figyelembe, hogy a telepítő nem végez közvetlen összehasonlítást a verzió adattípussal a feltételes utasításokban. Nem használhat például összehasonlító operátorokat az olyan verziók összehasonlítására, mint a "01.10" és az "1.010" egy feltételes utasításban. Ehelyett használjon érvényes módszert egy verzió keresésére, például Meglévő alkalmazások, fájlok, beállításjegyzék-bejegyzések vagy .ini fájlbejegyzések keresése, majd állítson be egy tulajdonságot.

Tulajdonságok használata feltételes utasításokban