Syntax der bedingten Anweisung
In diesem Abschnitt werden die Syntax der bedingten Anweisungen beschrieben, die von der MsiEvaluateCondition Funktion und der Aktion Sequenztabellenverwendet werden. Weitere Informationen finden Sie unter Beispiele für die Syntax der bedingten Anweisung.
Zusammenfassung der Syntax der bedingten Anweisung
Diese Tabelle und die folgende Liste fassen die Syntax zusammen, die in bedingten Ausdrücken verwendet werden soll.
Artikel | Syntax |
---|---|
Wert | Symbol | Literal | ganze Zahl |
Vergleichsoperator | < | > | <= | >= | = | <> |
Ausdruck | Wert | Wertvergleichsoperatorwert | ( Ausdruck )| |
Boolescher Faktor | Ausdruck | NICHT Ausdruck |
Boolescher Ausdruck | Boolescher Faktor | Boolescher UND Ausdruck |
Ausdruck | Boolescher Ausdruck | Boolescher Ausdruck ODER Ausdruck |
Symbol | eigenschaft | %environment-Variable | $component aktion | ?component-state | &Featureaktion | !feature-state |
Bei Symbolnamen und Werten wird die Groß-/Kleinschreibung beachtet.
Bei Namen von Umgebungsvariablen wird die Groß-/Kleinschreibung nicht beachtet.
Literaltext muss zwischen Anführungszeichen ("Text") eingeschlossen werden.
Anmerkung
Literaltext mit Anführungszeichen kann in bedingten Anweisungen nicht verwendet werden, da es kein Escapezeichen für Anführungszeichen innerhalb von Literaltext gibt. Wenn Sie einen Vergleich mit Literaltext durchführen möchten, der Anführungszeichen enthält, sollte der Literaltext in eine Eigenschaft gesetzt werden. Um beispielsweise zu überprüfen, ob die SERVERNAME-Eigenschaft keine Anführungszeichen enthält, definieren Sie eine Eigenschaft namens QUOTES in der tabelle Eigenschaft mit dem Wert ", und ändern Sie die Bedingung in NOT SERVERNAME><QUOTES.
Nicht vorhandene Eigenschaftswerte werden als leere Zeichenfolgen behandelt.
Numerische Gleitkommawerte werden nicht unterstützt.
Operatoren und Rangfolge sind identisch mit den SPRACHEN BASIC und SQL.
Arithmetische Operatoren werden nicht unterstützt.
Klammern können verwendet werden, um die Rangfolge des Operators außer Kraft zu setzen.
Bei Operatoren wird die Groß-/Kleinschreibung nicht beachtet.
Bei Zeichenfolgenvergleichen führt eine Tilde "~", die dem Operator vorangestellt ist, einen Vergleich aus, bei dem die Groß-/Kleinschreibung nicht beachtet wird.
Der Vergleich einer ganzen Zahl mit einem Zeichenfolgen- oder Eigenschaftswert, der nicht in eine ganze Zahl konvertiert werden kann, ist immer msiEvaluateConditionFalse, mit Ausnahme des Vergleichsoperators "<>", der msiEvaluateConditionTruezurückgibt.
Zugriffspräfixe
In der folgenden Tabelle sind die Präfixe aufgeführt, die für den Zugriff auf verschiedene System- und Installationsprogramme für die Verwendung in bedingten Ausdrücken verwendet werden sollen.
Symboltyp | Präfix | Wert |
---|---|---|
Installer-Eigenschaft | (keine) | Wert der Eigenschaft (Property) Tabelle. |
Umgebungsvariable | % | Wert der Umgebungsvariable. |
Komponententabellenschlüssel | $ | Aktionszustand der Komponente. |
Komponententabellenschlüssel | ? | Installierter Zustand der Komponente. |
Featuretabellenschlüssel | & | Aktionsstatus des Features. |
Featuretabellenschlüssel | ! | Installierter Status des Features. |
Logische Operatoren
In der folgenden Tabelle sind die logischen Operatoren in bedingten Ausdrücken in Der Reihenfolge von hoher bis niedriger Rangfolge dargestellt.
Operator | Bedeutung |
---|---|
Nicht | Präfix unärer Operator; invertiert den Status des folgenden Ausdrucks. |
Und | TRUE, wenn beide Begriffe WAHR sind. |
Oder | TRUE, wenn beide Begriffe WAHR sind. |
Xor | TRUE, wenn beide Begriffe jedoch nicht WAHR sind. |
Eqv | WAHR, wenn beide Begriffe WAHR sind oder beide Ausdrücke FALSCH sind. |
Kobold | WAHR, wenn der linke Ausdruck FALSCH oder der rechte Ausdruck WAHR ist. |
Vergleichsoperatoren
In der folgenden Tabelle sind die Vergleichsoperatoren aufgeführt, die in bedingten Ausdrücken verwendet werden. Diese Vergleichsoperatoren können nur zwischen zwei Werten auftreten.
Operator | Bedeutung |
---|---|
= | TRUE, wenn der linke Wert gleich dem rechten Wert ist. |
<> | TRUE, wenn der linke Wert nicht gleich dem rechten Wert ist. |
> | TRUE, wenn der linke Wert größer als der rechte Wert ist. |
>= | TRUE, wenn der linke Wert größer oder gleich dem rechten Wert ist. |
< | TRUE, wenn der linke Wert kleiner als der rechte Wert ist. |
<= | TRUE, wenn der linke Wert kleiner oder gleich dem rechten Wert ist. |
Operatoren für Teilzeichenfolgen
In der folgenden Tabelle sind die Teilzeichenfolgenoperatoren aufgeführt, die in bedingten Ausdrücken verwendet werden. Teilzeichenfolgenoperatoren können zwischen zwei Zeichenfolgenwerten auftreten.
Operator | Bedeutung |
---|---|
>< | TRUE, wenn die linke Zeichenfolge die rechte Zeichenfolge enthält. |
<< | TRUE, wenn die linke Zeichenfolge mit der rechten Zeichenfolge beginnt. |
>> | TRUE, wenn die linke Zeichenfolge mit der rechten Zeichenfolge endet. |
Bitweise numerische Operatoren
Die folgende Tabelle zeigt die bitweise numerischen Operatoren in bedingten Ausdrücken. Diese Operatoren können zwischen zwei ganzzahligen Werten auftreten.
Operator | Bedeutung |
---|---|
>< | Bitweise UND, WAHR, wenn die linke und rechte ganze Zahl alle Bits gemeinsam haben. |
<< | True, wenn die hohen 16-Bits der linken ganzzahligen Zahl gleich der rechten ganzen Zahl sind. |
>> | True, wenn die niedrigen 16-Bits der linken ganzzahligen Zahl gleich der rechten Ganzzahl sind. |
Feature- und Komponentenstatuswerte
In der folgenden Tabelle wird gezeigt, wo sie gültig ist, um die Symbole für Feature- und Komponentenoperator zu verwenden.
Operator <Status> | Wo diese Syntax gültig ist |
---|---|
$component-Aktion | In der Tabelle Bedingung und in der Reihenfolge Tabellen nach der CostFinalize-Aktion. |
&Featureaktion | In der Tabelle Bedingung und in der Reihenfolge Tabellen nach der CostFinalize-Aktion. |
!Featurestatus | In der Tabelle Bedingung und in der Reihenfolge Tabellen nach der CostFinalize-Aktion. |
?Component-State | In der Tabelle Bedingung und in der Reihenfolge Tabellen nach der CostFinalize-Aktion. |
In der folgenden Tabelle sind die Feature- und Komponentenstatuswerte aufgeführt, die in bedingten Ausdrücken verwendet werden. Diese Zustände werden erst festgelegt, wenn MsiSetInstallLevel aufgerufen wird, entweder direkt oder durch die CostFinalize Aktion.
Zustand | Wert | Bedeutung |
---|---|---|
INSTALLSTATE_UNKNOWN | -1 | Für das Feature oder die Komponente müssen keine Aktionen ausgeführt werden. |
INSTALLSTATE_ADVERTISED | 1 | Angekündigte Funktion. Dieser Zustand ist für Komponenten nicht verfügbar. |
INSTALLSTATE_ABSENT | 2 | Feature oder Komponente ist nicht vorhanden. |
INSTALLSTATE_LOCAL | 3 | Feature oder Komponente auf dem lokalen Computer. |
INSTALLSTATE_SOURCE | 4 | Feature oder Komponente wird aus der Quelle ausgeführt. |
Der bedingte Ausdruck "&MyFeature=3" ergibt sich beispielsweise nur, wenn MyFeature von seinem aktuellen Zustand in den Zustand der Installation auf dem lokalen Computer wechselt, INSTALLSTATE_LOCAL.
Beachten Sie, dass Sie nicht von der Bedingung $Component 1=3 abhängen sollten, um zu überprüfen, ob Component1 lokal auf dem Computer installiert ist. Dies kann fehlschlagen, wenn Component1 von mehreren Produkten installiert wird. Nachdem Component1 lokal von Product1 installiert wurde, wertet das Installationsprogramm die Bedingung $Component 1=3 während der Installation von Product2 als False aus. Dies liegt daran, dass das Installationsprogramm die Version der Komponente mithilfe des Schlüsselpfads der Komponente bestimmt und die Komponente für die Installation kennzeichnet, wenn die Version größer oder gleich der installierten Komponente ist.
Beachten Sie, dass das Installationsprogramm keine direkten Vergleiche des Datentyps Version in bedingten Anweisungen vorgibt. Sie können z. B. keine vergleichenden Operatoren verwenden, um Versionen wie "01.10" und "1.010" in einer bedingungsbedingten Anweisung zu vergleichen. Verwenden Sie stattdessen eine gültige Methode, um nach einer Version zu suchen, z. B. in Suchen nach vorhandenen Anwendungen, Dateien, Registrierungseinträgen oder .ini Dateieinträgen, und legen Sie dann eine Eigenschaft fest.
Verwandte Themen