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.
Kapcsolódó témakörök