Frage

Ich habe eine InstallShield InstallScript MSI projekt, das die enthält FlexNet-Verbindung ohne Software-Manager-Merge-Modul.Die Version dieses Produkts ist 6.0.32.Ich habe ein zweites Installationsprogramm für Version 6.1 erstellt, das auch das enthält FlexNet-Verbindung ohne Software-Manager-Merge-Modul.Wenn ich ein größeres Upgrade auf einem System durchführe, das die Version 6.0.32 enthält, wird im MSI-Protokoll eine Meldung angezeigt, die besagt:

Disallowing installation of component: {FF970098-B748-427B-B946-AA8E1A1F82AD} since the same component with higher versioned keyfile exists

Die Komponente verweist auf die isusweb.dll datei befindet sich im FlexNet Connect-Ordner.

Es sieht so aus, als ob diese Überprüfung vor dem Auftritt erfolgt 6.0.32 produkt wird entfernt.Die Installation wird fortgesetzt, um das zu entfernen 6.0.32 produkt, das entfernt isusweb.dll.Während der 6.1 installieren Sie die isusweb.dll wird wegen der Komponentenversionsprüfung nicht zurückgesetzt.

Das Upgrade ist erfolgreich.Wenn ich versuche, die Anwendung über eine Verknüpfung auszuführen, werden die Komponenten überprüft.Seit dem isusweb.dll fehlt das MSI versucht eine Reparatur, kann dann das MSI nicht finden und lässt die Anwendung nicht öffnen.

Gibt es eine Möglichkeit, das Mergemodul immer zu überschreiben?

War es hilfreich?

Lösung

Das klingt verdächtig nach diesem Fehler:

http://support.microsoft.com/kb/905238/en-us

und ich bin auf diesen Fehler gestoßen und Sie sehen diese Protokollmeldung, und RemoveExistingProducts befindet sich zu Beginn der Installation.Es entscheidet, die Datei basierend auf der vorhandenen höheren Version nicht zu installieren, bewertet diese Entscheidung jedoch nicht erneut, nachdem der Mitarbeiter sie entfernt hat.Dann stellt eine Reparatur es wieder her, wenn Sie eine Verknüpfung verwenden.Der Fehler sollte nur für Dateien im GAC oder SxS gelten, das ist also etwas rätselhaft.

Wenn Sie REP am Ende der Transaktionssequenz planen können (InstallExecute, REP, InstallFinalize ), sollte dies behoben werden - möglicherweise einen Versuch wert, da alle anderen Auswirkungen des Verschiebens in Ordnung sind.

Andere Tipps

Zusammenführungsmodule werden nicht installiert, sie werden zusammengeführt.Produkt MSI's werden installiert.Eines der Probleme bei der Verwendung von Mergemodulen von Drittanbietern besteht darin, dass Sie nicht viel dagegen tun können, wenn sie einen Fehler haben.

Ich würde in Betracht ziehen, eine MSI ausschließlich zum Zwecke der Kapselung dieser MSM zu erstellen.Dann würde ich ein Setup Prereq- oder Suite-Installationsprogramm erstellen, um dieses MSI abgesehen von Ihrem Produkt-MSI zu installieren.

Sie haben bereits zwei wirklich gute Antworten, aber um zu versuchen und zu synthetisieren:

Es klingt wirklich wie ein fehlerhaftes Mergemodul. Phil schlägt vor, Ihre Wiederholungsplatzierung in der InstallExecuteSequence zu korrigieren, um den Fehler zu umgehen. Chris schlägt vor, das fehlerhafte Mergemodul in ein eigenes Setup zu setzen.Ich stimme beiden zu und denke, Sie sollten beiden Vorschlägen folgen:

  • Entfernen Sie das Merge-Modul aus Ihrem Haupt-Setup.
  • Erstellen Sie ein neues Setup, fügen Sie das fehlerhafte Zusammenführungsmodul hinzu und stellen Sie die richtige Wiederholungssequenzierung sicher.

Damit der REP-Fix funktioniert, muss Ihre Komponentenreferenzierung zu 100% korrekt sein - jetzt und in Zukunft.Um dies als Problem zu beseitigen, erstellen Sie eine separate Einrichtung ermöglicht es Ihnen, das fehlerhafte Modul in einem eigenen MSI zu speichern.Dies hilft Ihnen zu vermeiden, dass der Fehler in Zukunft versehentlich oder durch geändertes Design erneut aktiviert wird - und letzteres ist niemals unwahrscheinlich.

Wie Chris sagt:ein Mergemodul wird nicht ausgeliefert, es wird zusammengeführt.Soweit ich weiß, ist möglicherweise ein aktualisiertes Zusammenführungsmodul verfügbar, aber selbst dann ist es ratsam, es zu enthalten.Vor allem, wenn Sie mit dem GAC (Global Assembly Cache) zu tun haben.

Eine andere Lösung, die ich bei Auftreten dieses Fehlers angewendet habe, bestand darin, die Spalte "Version" aus der Dateitabelle im Mergemodul mithilfe von Orca zu aktualisieren.Stellen Sie dies auf das Maximum 65535.65535.65535.65535 ein. Dadurch wird das Upgrade gezwungen, die DLL immer vom Mergemodul zu installieren.

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