MSI-Referenzzählung: Zwei Produkte installieren dieselben MSIs

8

Wenn die Produkte A und B jeweils mehrere MSIs installieren und einige der MSIs identisch sind, beeinflusst die Deinstallation von A oder B die anderen? Ist die Installation wichtig?

Was passiert außerdem, wenn die Version von Common MSI C in Produkt B höher ist und B bei der Installation C aktualisiert? Wenn Sie nun B deinstallieren, wird das häufig verwendete MSI C entfernt, wodurch das Produkt A beschädigt wird. Wie gehen Sie damit ohne die Permanent-Flagge um?

    
rharrison33 18.07.2014, 22:58
quelle

3 Antworten

13

Das erste, was bei dieser Frage in den Sinn kommt, ist, ob die fraglichen Produkte so zersetzt sind, wie sie sein sollten.

Als allgemeine Regel glauben alle MSI-Dateien, dass sie alles besitzen, was sie installieren, und sie werden alles entfernen, das an eine Komponenten-GUID in der MSI bei der Deinstallation angehängt ist, wenn die Anzahl der Produkte die Komponente verwendet ) ist Null.

Für diese Regel gibt es einige Einschränkungen :

  • Wenn die Komponente als permanent gekennzeichnet ist, wird sie niemals deinstalliert
  • Wenn das Datei- / Registrierungselement überhaupt no component GUID hat, wird es installiert, nie von Windows Installer überwacht und auch nicht deinstalliert
  • Schließlich ermöglicht die Referenzzählung für MSI , dass dieselbe Komponente für mehrere Produkte freigegeben wird und bei der Deinstallation auf der Festplatte verbleibt, wenn sie von mehreren anderen Installationspaketen registriert wird

Die Mechanismen zum Erstellen von gemeinsamen Komponenten zwischen MSI-Paketen sind im Allgemeinen:

  1. Mit Zusammenführungsmodul können Sie gemeinsam genutzte Komponenten installieren, die als Referenz gezählt werden und die nach der Deinstallation eines verwandten Produkts auf dem Datenträger verbleiben, wenn andere Clients die GUID auf dem System verwenden. Ein Mergemodul wird zur Kompilierungszeit in andere MSI-Pakete integriert. Eine Form der binären frühen Bindung , wenn Sie möchten. Es kann in jedes Paket zusammengefügt werden.
  2. Mit dem Aufkommen von Wix ( XML-basierte Installationsprogramm-Quelldateien) ist es möglich, das gleiche Segment von Dateien aus mehreren Setups über ein XML-Quellendatei anstelle eines Mergemoduls. Dies ist meiner Meinung nach deutlich besser, da Wix besser für die Quellcodeverwaltung geeignet ist ( siehe Wix Link zur Erklärung ). Es ist von entscheidender Bedeutung zu erkennen, dass eine " Wix-Quelleinschlussdatei " genau die gleiche Wirkung wie ein Zusammenführungsmodul hat - ihre Komponenten werden ordnungsgemäß für die Freigabe zwischen verschiedenen Installationspaketen gezählt , vorausgesetzt, die GUIDs in der Quelldatei sind fest codiert (ich empfehle, keine automatisch generierten Guids für diesen bestimmten Zweck zu verwenden). Es ist meine persönliche Meinung, dass Sie Drittanbieter-Mergemodule für generische Laufzeitdateien verwenden sollten, aber nur Wix für Ihre eigenen freigegebenen Dateien enthält. Merge-Module sind schwieriger zu verwalten als Wix enthält imho.

Aktualisierung und Dateiaustausch :

  • Um Szenarien zu aktualisieren, werden die MSI-Dateiersetzungsregeln aktualisiert Aktualisieren Sie neuere Dateien, abhängig von der allgemeinen Einstellung in der speziellen Windows Installer-Eigenschaft REINSTALLMODUS .
  • Im Allgemeinen überschreiben Dateien höherer Versionen niedrigere Versionsdateien. Nicht versionierte Dateien werden überschrieben, wenn sie nicht geändert wurden. Wenn sie geändert werden, sind die Erstellungsdatums- und Änderungsdatumsstempel unterschiedlich und die Datei wird in Ruhe gelassen.
  • Beachten Sie, dass das Problem der Herunterstufung von Dateien durch das gesamte MSI-Design aktiv verhindert wird. Wenn Sie Dateien downgraden müssen (freigegeben oder nicht), gibt es etwas Deployment stinky zu Ihrem Design.

An dieser Stelle würde ich diese Antworten gründlich lesen:

Vorausgesetzt, Sie verwenden Wix oder Sie sind bereit, Wix zu verwenden, würde ich meinen, dass die beste Lösung für überlappende Produkte darin besteht, Ihr Installationsprogramm in Wix-Segment-Quelldateien zu zerlegen benötigt in Ihren Haupt-Installern. Dies ermöglicht die Deinstallation eines Produkts, um Komponenten zu belassen, die von anderen Anwendungen verwendet werden.

Aus diesem Grund möchte ich nicht zu viele überlappende Abhängigkeiten in meinen Installern verursachen aus den in diesem Artikel aufgeführten Gründen (auch oben aufgeführt): Wix, um mehrere Anwendungen zu installieren .

Für Stabilität ist es von entscheidender Bedeutung, dass gemeinsame Komponenten stabil sind, bevor sie von zu vielen Setups verwendet werden als Bugfix als allgemeine Regel erfordert die Neukompilierung aller Setups, in denen die gemeinsame Komponente kompiliert oder zusammengeführt wird. Der einfache Weg, es zu sagen: bündeln Sie Dateien, die sich zusammen ändern .

Um dieser Notwendigkeit einer massiven Neukompilierung entgegenzuwirken, können Sie sich für ein eigenständiges unterstützendes Setup entscheiden, das aus einigen der gemeinsam genutzten Komponenten besteht. Einer oder einige solcher " geteilten Komponenten-Setups ", die wahrscheinlich Wix enthalten, enthalten diese Änderungen zusammen in einem ähnlichen langsamen Veröffentlichungsplan und trennen sich dann Setups für jedes Produkt sollten in der Lage sein, jedem Bereitstellungsbedarf Rechnung zu tragen und gleichzeitig ein Gleichgewicht zwischen Wartbarkeit und Flexibilität zu wahren.

Das Produkt-Setup sollte dann das sein, das oft neu kompiliert wird, und die gemeinsam genutzten Module sollten für eine minimale Neukompilierung ausgelegt sein. Dann warte auf wechselnde Anforderungen: -).

Für mich dreht sich alles um Zusammenhalt und Kopplung und die Schwierigkeit, Vertriebs-, Marketing- und technische Anforderungen in Einklang zu bringen.

    
Stein Åsmul 10.08.2014, 11:24
quelle
4

Wenn Produkt A und Produkt B ein MSI C gemeinsam haben, dann Wenn Produkt A installiert ist, wird auch MSI C installiert, jetzt, wenn Produkt B installiert ist, wird MSI C nicht installiert, da es bereits im System verfügbar ist (wenn Produkt B WiX Burn basiert, registriert es eine Abhängigkeit). Im Falle der Deinstallation wird die Referenzzählung automatisch durchgeführt, wenn Produkt A und Produkt B auf WiX Burn basiert oder andere Bootstrapper, die Referenzzählen unterstützen, sonst wird MSI C zusammen mit Produkt B entfernt.

    
Sanketh P B 19.07.2014 07:12
quelle
1

sogar ich habe nach der Antwort der obigen Frage gesucht, aber in Wix v3.7 und höher werden die MSI-Pakete automatisch von der Burn-Engine gezählt. Ich habe das getestet und funktioniert perfekt. Das gleiche kann in Robs Blog

überprüft werden     
Mohit 02.07.2015 06:35
quelle