Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Fehler in Chained MSI führt zu kompletten Rollback


6 replies to this topic

norberts

norberts
  • Full Members
  • 6 posts

Posted 08 July 2016 - 10:59

Hallo zusammen,

 

wir haben aktuell ein Problem in einem Basic MSI Projekt mit einem Chained MSI. Falls in der Installation des chained MSI ein Fehler auftritt, wird ein Rollback für die komplette Installation angestoßen.

Sowohl für das "Haupt-MSI", welches als Setup.exe ausgeliefert wird, als auch für das Chained-MSI werden immer Major Updates erzeugt. Folgende Szenarien sollen das Problem näher beschreiben:

 

Fall 1

Installer: Produkt A V1.1, chained Produkt B V1.1

Zielsystem: Keines der beiden Produkte ist installiert

-> Funktioniert problemlos

 

 

Fall 2

Installer: Produkt A V1.1, chained Produkt B V1.1

Zielsystem: Produkt A V1.0, chained Produkt B V1.0

-> Funktioniert ohne Probleme, beide Produkte werden über Major Update aktualisiert.

 

Fall 3

Installer: Produkt A V1.1, chained Produkt B V1.1

Zielsystem: Produkt A V1.0, chained Produkt B V1.1

-> Bei der Installation des Produkts B erfolgt ein Fehler, welcher zu einem Rollback der kompletten Installation führt.

 

Wünschenswert wäre, dass im 3ten Fall nur die Installation des Produkts B nicht durchgeführt wird. Produkt A sollte sich aber von V1.0 auf V1.1 updaten.

Im Anhang ist ein Screenshot der Chained Konfiguration zu finden, anbei ein Auszug aus dem MSI Log:

 

MSI (s) (74:C8) [11:53:51:955]: Product: xxx-- Configuration failed.
MSI (s) (74:C8) [11:53:51:955]: Das Produkt wurde durch Windows Installer neu konfiguriert. Produktname: xxx. Produktversion: 3.0.5. Produktsprache: 1033. Hersteller: xxxxx. Erfolg- bzw. Fehlerstatus der neuen Konfiguration: 1638.
MSI (s) (74:C8) [11:53:51:970]: MainEngineThread is returning 1638
Eine andere Version des Produkts ist bereits installiert. Die Installation dieser Version kann nicht fortgesetzt werden. Verwenden Sie die Systemsteuerungsoption "Software", um die vorhandene Version dieses Produkts zu konfigurieren oder zu entfernen.
{1F839100-205B-4497-9268-5A8F621F95B9}

 

Ich habe schon verschiedene Einstellungen bezüglich der Chained Konfiguration durchprobiert, habe aktuell aber keine weiteren Ideen zur Lösung dieses Problems.

 

Viele Grüße

Norbert Staudte

 

 

 

 

Attached Images

  • ChainedMSI.png


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 11 July 2016 - 15:36

Chained Pakete werden in einer gemeinsamen Transaktion installiert, d.h. entweder alle oder keines. Wenn bei einem ein Fehler auftritt, werden alle zurückgerollt. Soweit also normales Verhalten.

Das Problem sehe ich eher beim zweiten Paket. Die Fehlermeldung tritt normalerweise nur auf, wenn sich der PackageCode geändert hat. Kann es sein, dass Produkt B V 1.1 zwar die gleiche Versionsnummer und ProductCode hat wie das bereits installierte B 1.1, jedoch einen anderen PackageCode?



norberts

norberts
  • Full Members
  • 6 posts

Posted 12 July 2016 - 16:20

Für das Produkt B wurden in InstallShield mehrere Releases konfiguriert, als Setup.exe und als MSI. Werden in diesem Fall beim Bauen MSIs mit unterschiedlichen PackageCodes erzeugt?

Produkt B wurde im Fehlerfall nämlich über die Setup.exe installiert und für die Chained-Installation wurde das Release für das "nur-MSI" verwendet.

 

Könnte das der Grund für das Rollback sein?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 14 July 2016 - 14:08

Jedes Mal wenn die msi neu erzeugt wird bekommt sie normalerweise einen neuen PackageCode. Das könnte also der Grund sein. Extrahiere doch mal die msi aus der setup.exe und schau ob der Fehler damit weg ist.



norberts

norberts
  • Full Members
  • 6 posts

Posted 18 July 2016 - 12:35

Ja das war die Ursache, der Fehler ist damit weg.

Jetzt hab ich nur das Problem, dass ich Produkt B sowohl als MSI (für chained Paket) als auch als Setup.exe benötige. Von daher bin ich im InstallShield gezwungen, zwei verschiedene Releases zu konfigurieren, und damit 2 PackageCodes...

Gibt es evtl. noch in der Konfiguration des Chained Pakets (in Produkt A) eine Möglichkeit dieses Problem zu beheben?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 July 2016 - 18:43

Du könntest im Release auf der Registerkarte Events ein Proecompression Event eintragen: Z.B. eine Batch-Datei, die die .msi wegkopiert bevor sie in die setup.exe komprimiert wird. Oder ein Postbuild event das sie aus der setup.exe extrahiert.



norberts

norberts
  • Full Members
  • 6 posts

Posted 25 July 2016 - 13:53

Okay hat geklappt, vielen Dank!

 

Ich habe nun einen Postbuild Step definiert:

<ISProjectFolder>\Installers\ProduktB\ProduktB_Setup\DiskImages\DISK1\ProduktB.exe /s /x /b"<ISProjectFolder>\Installers\ProduktB\ProduktB_Setup\DiskImages\DISK" /v"/qn"

Damit lässt sich das MSI aus dem Setup nachträglich extrahieren. Evtl. gibt es ja noch elegantere Möglichkeiten für das Extrahieren? Aber so funktioniert es zumindest.