2017-07-23 2 views
0

Ich führe eine kleine Aktualisierung durch, aber es aktualisiert keine Dateien zu einer meiner Funktionen eines Installers. Es gibt folgenden Fehler im MSI-Protokoll.Geringfügige Aktualisierung schlägt fehl

MSI (c) (88:64) [21: 35: 44: 834]: Anmerkung: 2 1: 2262: Patch 3: -2147287038
MSI (c) (88:64) [21 : 35: 44: 834]: Richtlinienwert Machine 'EnforceUpgradeComponentRules' 0
MSI (c) (88:64) [21: 35: 44: 834]: SELMGR: ComponentId ‚{A48DDBD3-3B28-F2FF- DBCE-0462EC330D7E} 'ist registriert für die Funktion' Client ', ist aber in der Komponente Tabelle nicht vorhanden. Das Entfernen von Komponenten aus einem Feature wird nicht unterstützt!
MSI (c) (88:64) [21: 35: 44: 834]: SELMGR: Entfernen einer Komponente aus einer Funktion wird nicht

unterstützt

Ich Lösche keine Komponente, während machen ein Upgrade-Installer. Ich habe auch nach Regeln für die Verletzung von Komponenten gesucht, aber das habe ich nicht getan. Ich weiß nicht, warum das passiert. Aus diesem Grund geht das Feature "Client" in den Status "Advertise". Ich habe auch überprüft, dass diese Komponente in meinem MSI nicht vorhanden ist.

+2

Jede Chance, dass die Komponente nicht von Ihnen direkt verfasst, wurde aber bei der Erstellung durch andere Mittel (wie dynamische hinzugefügt Dateiverknüpfungen usw.) Suchen Sie im Basispaket .msi nach dieser Komponente, um festzustellen, worum es sich handelt. –

+1

Schauen Sie immer auf die gebaute msis nicht der ism zu wissen, was wirklich drin ist. –

+0

@MichaelUrman: Nein. Wir fügen dies nicht zur Erstellungszeit hinzu. –

Antwort

1

Dynamische Datei-/Abhängigkeitssuche ist aus diesem Grund mit kleineren Upgrades nicht wirklich kompatibel. Geringe Upgrades sind sehr wählerisch in Bezug auf ihre Regeln. Wenn Sie die Dynamik wirklich beibehalten möchten, sollten Sie zu Major Upgardes wechseln. In beiden Fällen sollten Sie Ihre Installer immer mit der Eigenschaft MSIENFORECUPGRADECOMPONENTRULES = 1 testen, wenn Sie bei kleineren Upgrades bleiben.

Für Ihre aktuelle Situation, erstellen Sie eine 0-Byte-Datei in Ihrer Build-Umgebung mit dem gleichen Namen und Autor es in das ISM genau wie Sie es in der Build-Umgebung gesehen haben. Say Komponente Primärschlüssel, Datei Primärschlüssel, Komponente ID (GUID) gleiche Funktion ... alles. Jetzt markieren Sie die Komponente als transitiv (ich denke, es heißt in InstallShield neu zu bewerten .. tut mir leid, es war eine Weile) und geben Sie einen bedingten Ausdruck, der immer als falsch wie GoAway = 1 ausgewertet wird.

Jetzt werden Sie kleinere Upgrades Regeln passieren und die Komponente wird "punktiert" und weggehen.

Aber ich hoffe, Sie können sehen, das ist nur ein Patch. Diese Situation kann leicht wieder mit Ihrer aktuellen Strategie passieren. Ich schlage vor, das zu ändern.

Hier ist ein Artikel, den ich vor etwa 10 Jahren geschrieben, die hier gilt:

http://blog.iswix.com/2007/06/dealing-with-very-large-number-of-files.html