Frage

Ich habe ein Installationsprogramm, das keine MSI-Komponentenregeln bei der Installationszeit nicht folgen scheint. Hier ist das Szenario:

os: Windows 7 x64

Produkt A installiert einen Satz von Dateien, die an eine Komponente mit GUID "123ABC" in C: \ Programme \ Common Files \ Foo verbunden sind. Die Komponente hat die folgenden Dateien:
foo.dll, Version 1.0.0.0, (KeyPath)
foo.sys, Version 1.0.0.0
foo.inf, keine Version
foo.cat, keine Version

Produkt B installiert den gleichen Satz von Dateien, die an dieselbe Komponentenguide "123ABC" in denselben Pfad C: \ Programme \ Common-Dateien \ foo verbunden sind. Die Komponente hat die folgenden Dateien:
foo.dll, Version 1.0.0.1, (KeyPath)
foo.sys, Version 1.0.0.0
foo.inf, keine Version
foo.cat, keine Version

Produkt A ist zuerst installiert, und das Produkt B führt kein Upgrade des Produkts A durch, sie teilen nur einen gemeinsamen MSM, der die Komponente "123ABC" enthält. Meine Erwartung ist, dass MSI, wenn das Produkt B installiert ist, die Keypath-Versionen von foo.dll vergleichen und bestimmen, dass das Produkt B's foo.dll neuer ist. Dann werden alle vier Dateien, die der Komponente "123ABC" zugeordnet sind, die vorhandenen Dateien auf der Festplatte, die von Produkt A installiert wurden, überschrieben. Dies geschieht nicht :( stattdessen ist dies das resultierende Dateigruppe:
C: \ Programme \ Common-Dateien \ foo
foo.dll, Version 1.0.0.1 (vom Produkt B)
foo.sys, Version 1.0.0.0 (vom Produkt a)
foo.inf, keine Version (von Produkt a)
Foo.cat, keine Version (vom Produkt B)

Nur die DLL- und CAT-Datei werden überschrieben. Aus der MSI-Protokolldatei kann ich Folgendes sehen:

generasacodicetagpre.

Ich dachte, MSI-Komponenten installierten alle zugehörigen Dateien, basierend darauf, ob der KeyPath installiert werden soll. Was könnte dazu führen, dass jede Datei mit derselben Komponente zusammenhängt, die individuell verglichen wird?

War es hilfreich?

Lösung

KeyPath-Zustand bestimmt, ob eine Komponente auf eingesetzt wird.Ressourcen innerhalb der Komponente folgen dann ihren Regeln: z. B. folgen Dateien dem Dateiversionierungsregeln .

Andere Tipps

Angenommen, jedes Produkt verwenden Standard-Costing-Regeln (OMUs) Zusammenführungsmodule, die gemeinsam genutzte Komponenten enthalten, sollten funktionieren.FWIW, Sie möchten vielleicht in Betracht ziehen, einen MSI zu erstellen, der dieses Merge-Modul verbraucht und dann einem Bootstrapper für beide Produkte hinzugefügt wird.Patch-Wartung kann auf diese Weise sauberer sein.

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