2016-05-02 3 views
0

Ich habe eine verkettete Installation, die 3 msis installiert. Wenn eine der Msi-Paketinstallation fehlschlägt, werden die vorherigen nicht zurückgesetzt. Ich habe sichergestellt, dass die Attribute wie DisableRollback und Vital nicht aktualisiert werden und ihre Standardwerte von Nein und Ja haben. Ich habe eine spezifische customaction in allen msis, die das Execute-Attribut als Rollback haben. Es funktioniert einwandfrei für das MSI-Paket, das fehlschlägt, aber die vorherigen Pakete, die installiert werden, werden nicht zurückgesetzt. Muss ich etwas Bestimmtes tun, damit der Rollback funktioniert?Deinstallieren funktioniert nicht, wenn die Installation des verketteten Pakets in Wix fehlschlägt

<Chain> 
    <MsiPackage Id="1".../> 
    <MsiPackage Id="2".../> 
    <MsiPackage Id="3".../> 
</Chain> 

Edit: Ich erkannte nun, dass jedes der Pakete ja das Permanent-Attribut gesetzt hatte. Sobald ich es auf "Nein" eingestellt habe, deinstalliert es die Komponenten, die es nicht getan hat. Das führt mich zu der Frage, was der Punkt des permanenten Attributs ist. Ich habe die Dokumentation von wixtoolset gesehen, aber was ich nicht verstehe, ist, wie die Attribute Permanent, Vital und DisableRollback funktionieren. Halten Sie die Frage offen, um diese Fragen zu beantworten.

Antwort

0

Verwenden Sie RollbackBoundary und platzieren Sie es in der Kette.

<Chain> 
    <RollbackBoundary /> 
    <MsiPackage Id="1".../> 
    <MsiPackage Id="2".../> 
    <MsiPackage Id="3".../> 
</Chain> 
Verwandte Themen