Delen via


Syntaxis van voorwaardelijke instructie

In deze sectie wordt de syntaxis beschreven van voorwaardelijke instructies die worden gebruikt door de MsiEvaluateCondition functie en de actie reekstabellen. Zie Voorbeelden van syntaxis van voorwaardelijke instructievoor meer informatie.

Samenvatting van syntaxis van voorwaardelijke instructie

Deze tabel en de volgende lijst bevatten een overzicht van de syntaxis die moet worden gebruikt in voorwaardelijke expressies.

Item Syntaxis
waarde symbool | letterlijk | geheel getal
vergelijkingsoperator < | > | <= | >= | = | <>
term waarde | waardevergelijkingsoperatorwaarde | ( expressie )|
Booleaanse factor term | term NIET
Booleaanse term Booleaanse factor | Booleaanse factor AND term
uitdrukking Booleaanse term | Booleaanse term OR expressie
symbool eigenschap | %environment-variable | $component-actie | ?component-state | &functieactie | !functiestatus

 

  • Symboolnamen en -waarden zijn hoofdlettergevoelig.

  • Namen van omgevingsvariabelen zijn niet hoofdlettergevoelig.

  • Letterlijke tekst moet tussen aanhalingstekens ('tekst') staan.

    Notitie

    Letterlijke tekst met aanhalingstekens kan niet worden gebruikt in voorwaardelijke instructies omdat er geen escapeteken is voor aanhalingstekens in letterlijke tekst. Als u een vergelijking wilt maken met letterlijke tekst die aanhalingstekens bevat, moet de letterlijke tekst in een eigenschap worden geplaatst. Als u bijvoorbeeld wilt controleren of de eigenschap SERVERNAAM geen aanhalingstekens bevat, definieert u een eigenschap met de naam QUOTES in de tabel Eigenschap met de waarde ' en wijzigt u de voorwaarde in NOT SERVERNAME><QUOTES.

     

  • Niet-bestaande eigenschapswaarden worden behandeld als lege tekenreeksen.

  • Numerieke waarden voor drijvende komma worden niet ondersteund.

  • Operators en prioriteit zijn hetzelfde als in de BASIC- en SQL-talen.

  • Rekenkundige operatoren worden niet ondersteund.

  • Haakjes kunnen worden gebruikt om de prioriteit van operatoren te overschrijven.

  • Operators zijn niet hoofdlettergevoelig.

  • Voor tekenreeksvergelijkingen voert een tilde '~' voor de operator een vergelijking uit die niet hoofdlettergevoelig is.

  • Vergelijking van een geheel getal met een tekenreeks- of eigenschapswaarde die niet kan worden geconverteerd naar een geheel getal is altijd msiEvaluateConditionFalse-, met uitzondering van de vergelijkingsoperator<>', die msiEvaluateConditionTrueretourneert.

Toegangsvoorvoegsels

De volgende tabel bevat de voorvoegsels die moeten worden gebruikt voor toegang tot verschillende systeem- en installatiegegevens voor gebruik in voorwaardelijke expressies.

Symbooltype Voorvoegsel Waarde
Installatieprogramma-eigenschap (geen) De waarde van de eigenschap (eigenschap) tabel.
Omgevingsvariabele % Waarde van omgevingsvariabele.
Sleutel van onderdeeltabel $ Actiestatus van het onderdeel.
Sleutel van onderdeeltabel ? De geïnstalleerde status van het onderdeel.
Functietabelsleutel & Actiestatus van de functie.
Functietabelsleutel ! De geïnstalleerde status van de functie.

 

Logische operators

In de volgende tabel ziet u de logische operatoren in voorwaardelijke expressies, in volgorde van hoge tot lage prioriteit.

Bediener Betekenis
Niet Voorvoegsel unaire operator; de status van de volgende term omkeren.
En WAAR als beide termen WAAR zijn.
Of WAAR als beide termen WAAR zijn.
Xor WAAR als een van beide, maar niet beide termen WAAR zijn.
Eqv WAAR als beide termen WAAR zijn of beide termen ONWAAR zijn.
Kabouter WAAR als de linkerterm ONWAAR of de rechterterm WAAR is.

 

Vergelijkende operatoren

In de volgende tabel ziet u de vergelijkingsoperatoren die worden gebruikt in voorwaardelijke expressies. Deze vergelijkingsoperatoren kunnen alleen optreden tussen twee waarden.

Bediener Betekenis
= WAAR als de linkerwaarde gelijk is aan de rechterwaarde.
<> WAAR als de linkerwaarde niet gelijk is aan de rechterwaarde.
> WAAR als de linkerwaarde groter is dan de rechterwaarde.
>= WAAR als de linkerwaarde groter is dan of gelijk is aan de rechterwaarde.
< WAAR als de linkerwaarde kleiner is dan de juiste waarde.
<= WAAR als de waarde links kleiner is dan of gelijk is aan de rechterwaarde.

 

Operatoren voor subtekenreeksen

In de volgende tabel ziet u de subtekenreeksoperators die worden gebruikt in voorwaardelijke expressies. Subtekenreeksoperators kunnen optreden tussen twee tekenreekswaarden.

Bediener Betekenis
>< TRUE als de linkertekenreeks de rechtertekenreeks bevat.
<< WAAR als de linkertekenreeks begint met de rechtertekenreeks.
>> WAAR als de linkertekenreeks eindigt met de rechtertekenreeks.

 

Bitsgewijze numerieke operatoren

In de volgende tabel ziet u de bitsgewijze numerieke operatoren in voorwaardelijke expressies. Deze operators kunnen optreden tussen twee gehele getallen.

Bediener Betekenis
>< Bitsgewijze EN, WAAR als de gehele getallen links en rechts veelvoorkomende bits hebben.
<< Waar als de hoge 16 bits van het linker gehele getal gelijk zijn aan het rechter gehele getal.
>> Is waar als de lage 16 bits van het linker gehele getal gelijk zijn aan het rechter gehele getal.

 

Statuswaarden voor onderdelen en onderdelen

In de volgende tabel ziet u waar het geldig is voor het gebruik van de functie- en onderdeeloperatorsymbolen.

Operator <status> Waar deze syntaxis geldig is
$component actie In de tabel Voorwaarde en in de reeks tabellen, na de actie CostFinalize.
&functieactie In de tabel Voorwaarde en in de reeks tabellen, na de actie CostFinalize.
!functiestatus In de tabel Voorwaarde en in de reeks tabellen, na de actie CostFinalize.
?component-state In de tabel Voorwaarde en in de reeks tabellen, na de actie CostFinalize.

 

In de volgende tabel ziet u de functie- en onderdeelstatuswaarden die worden gebruikt in voorwaardelijke expressies. Deze statussen worden pas ingesteld als MsiSetInstallLevel- wordt aangeroepen, rechtstreeks of door de actie CostFinalize.

Staat Waarde Betekenis
INSTALLSTATE_UNKNOWN -1 Er moet geen actie worden ondernomen voor de functie of het onderdeel.
INSTALLSTATE_ADVERTISED 1 Aangekondigde functie. Deze status is niet beschikbaar voor onderdelen.
INSTALLSTATE_ABSENT 2 Functie of onderdeel is niet aanwezig.
INSTALLSTATE_LOCAL 3 Functie of onderdeel op de lokale computer.
INSTALLSTATE_SOURCE 4 Functie of onderdeel wordt uitgevoerd vanuit de bron.

 

De voorwaardelijke expressie '&MyFeature=3' resulteert bijvoorbeeld alleen in Waar als MyFeature verandert van de huidige status in de status van de installatie op de lokale computer, INSTALLSTATE_LOCAL.

Houd er rekening mee dat u niet afhankelijk moet zijn van de voorwaarde $Component 1=3 om te controleren of Component1 lokaal op de computer is geïnstalleerd. Dit kan mislukken als Component1 door meer dan één product is geïnstalleerd. Nadat Component1 lokaal door Product1 is geïnstalleerd, evalueert het installatieprogramma de voorwaarde $Component 1=3 als False tijdens de installatie van Product2. Dit komt doordat het installatieprogramma de versie van het onderdeel bepaalt met behulp van het sleutelpad van het onderdeel en het onderdeel markeert voor installatie als de versie groter is dan of gelijk is aan het geïnstalleerde onderdeel.

Houd er rekening mee dat het installatieprogramma geen directe vergelijkingen uitvoert van de versie gegevenstype in voorwaardelijke instructies. U kunt bijvoorbeeld geen vergelijkende operatoren gebruiken om versies zoals '01.10' en '1.010' in een voorwaardelijke instructie te vergelijken. Gebruik in plaats daarvan een geldige methode om te zoeken naar een versie, zoals beschreven in Zoeken naar bestaande toepassingen, bestanden, registervermeldingen of .ini bestandsvermeldingenen stel vervolgens een eigenschap in.

Eigenschappen gebruiken in voorwaardelijke instructies