Frage

Ich habe eine benutzerdefinierte Aktion, die ausgeführt werden muss, wenn der Aktionszustand der spealischen Funktion "Installation" ist. Jetzt verwende ich den nächsten Zustand:

(&ca_feature=3 AND NOT &ca_feature=2) OR (!ca_feature=3 AND PATCH) .

Ich möchte es auch im Modify -Modus ausführen. Wenn die Funktion bereits installiert ist und der Benutzer sie nicht löschen möchte. Ich lehnte an, anzuhängen OR (REINSTALL><ca_feature OR REINSTALL=ALL) zu meiner Bedingungsfolge. Aber es scheint nicht zu funktionieren. Ich kann nicht bekommen, wie die MSI in einigen Situationen funktioniert, das ist mein Problem. Aber ich kann die Antwort auch im Internet nicht finden. Bitte sagen Sie mir, was ich falsch mache/verstehe? Danke im Voraus

War es hilfreich?

Lösung

Der Zustand sieht richtig aus. Der letzte Teil mit REINSTALL wäre wahr, wenn Ihre Funktion neu installiert werden soll.

Obwohl Sie versuchen können zu verwenden !ca_feature=3 Anstatt von REINSTALL><ca_feature: Das würde die CA ausführen, wenn die Funktion installiert wird.


Ich denke, Ihr Zustand könnte so aussehen:

(&ca_feature=3) OR (!ca_feature=3 AND NOT (REMOVE><ca_feature OR REMOVE=ALL))

Sie würde die CA ausführen, wenn diese Funktion für die Installation geplant ist oder wenn sie installiert ist und nicht zum Entfernen geplant ist.

Dieser Teil AND NOT &ca_feature=2 in der ersten Klammern ist überflüssig, weil &ca_feature Kann nicht gleich 2 sein, wenn es bereits gleich 3 ist.


Verwenden Sie MSI ausführliche Protokollierung besser zu verstehen, was los ist. Führen Sie Ihre Installation auf diese Weise aus:

msiexec /i package.msi /l*vx log.txt

Wenn sich ein Feature -Status ändert oder eine Eigenschaft geändert wird, wird im Protokoll eine Nachricht angezeigt. Dann können Sie die tatsächlichen Werte mit Ihren Erwartungen vergleichen. Verwenden Sie andere Betriebsschalter anstelle von /i Um es in Änderungen oder Entfernen des Modus auszuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top