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

Upgrade Code


3 replies to this topic

kukumar

kukumar
  • Full Members
  • 80 posts

Posted 12 January 2007 - 12:02

Hallo,

ich habe eine Frage zu den GUIDs und deren Auswirkungen. Ich werde bei Weiterentwicklung der Software und deren Installation auf Patches verzichten, sondern die Anwendung einer Produktfamilie immer über Upgrades aktualisieren.

Angenommen die aktuelle Anwendung heißt GTK und hat momentan die Version 1.11.1

Im InstallShield 12 bekommt die Installation also einen Product-Code, Upgrade Code und Paket-Code. Nun meine Fragen:

1. Wan muss ich Product-Code ändern? Bei Version 1.11.2, 1.12 oder 2.?

2. Wann muss ich Paket-Code ändern? Bei verschiedenen Kundenkonfigurationen (zum Teil unterschiedliche Dateien auf der Installatons-Quelle) ? Bzw. Muss mit jedem Release eines InstallShield Paketes auch Paket-Code geändert werden?

3. Wie läuft das genau mit dem Upgrade Code? Muss die Installation einer höheren Produktversion später diesen Upgrade-Code beinhalten. ICh will wissen wir dieser Upgrade-Code benutzt wird um später richtige Upgrades zu gewährleisten...

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 13 January 2007 - 15:41

Zuerst zu Frage 2: Du musst den PckageCode IMMER ändern. Zwei MSI Dateien die nicht identisch sind dürfen nicht den gleichen PackageCode haben. Denn der Installer schaut erst, ob er in seinem Cache schon eine MSI-Datei mit dieser GUID hat und nimmt die, anstatt der Datei die du eigentlich gestartet hast.

Zu 1: es gibt verschiedene typen von Upgrades: Minor und Major. Sie unterscheiden sich nur dadurch, ob der ProductCode gleich ist (Minor) oder unterschiedlich (Major). Die Änderung der Verisonsnummer ist egal, Hauptsache sie ändert sind in einer der ersten drei Positionen (A.B.C) und nicht nur in der vierten. D.h. 1.11.1.1 auf 1.11.1.2 geht nicht als Major Upgrade.
Beim Minor Update wird die neue Version über die alte installiert. Beim erstellen müssen bestimmte Regeln beachtet werden, so dürfen z.B. keine Komponenten aus dem Setup entfernt werden. Beim Major Upgrade wird normalerweise die alte Version zuerst (automatisch) vollständig entfernt und dann die neue Version installiert - allerdings kann man das auch anders konfigurieren. Hier gibt keine keine speziellen Einschränkungen.

Zu 3: Beim Major Upgrade sollten beide Versionen den gleichen UpgradeCode haben, aber unterschiedliche ProductCodes. Zusätzlich muss der UpgradeCode noch in die Upgarde tabelle eingetragen werden. Bei InstallShield legst du dazu einen Major Upgrade Eintrag an in der Upgrade-Ansicht. Wenn ein Produkt mit diesem UpgardeCode installiert ist, wird es automatisch entfernt.

kukumar

kukumar
  • Full Members
  • 80 posts

Posted 16 January 2007 - 10:42

OK, habe ich das richtig verstanden?

Ich habe z.B. zwei Kunden A und B, die das selbe Produkt mit Version 1.11. bekommen sollen. Der Installationssatz der beiden unterscheidet sich nur in kundenspezifischen Dateien (z.B. 3 Dateien)


Die Releases für beide müssten dann den selben ProducktCode, den selben Upgrade Code (weil die Upgrades ohne Änderung der kundenspezifischen Dateien laufen und in Zukunft vielleicht doch eine Version existiert, die alle Kunden gleichzeitig Updaten kann) aber verschiedenen PackageCodes ausweisen? Ist das so richtig.

Wenn ich verschiedene PackageCodes verwalten will, dann muss ich für jeden Kunden ein separates BASIC-MSI Projekt erstellen? Oder gibt es eine günstigere Variante, alle Kundne in ein Projekt zu packen?

Noch eine Verständnisfrage zu UpdateCode.

Angenommen aktuelle Version 1.11.3 hat Update Code XXYYZZ. Die nächste Version 1.11.4 oder 1.12 hat dann wiederum den selben Update Code. Was ist dann später mit dem Update von 1.11.4 oder 1.12. Hat dann z.B. die Version 1.13 auch den UpdateCode XXYYZZ? Ich schleppe ihn ja dann ewig mit, weil die späteren Updates meines jetzigen Updates immer die selben UpdateCodes haben müssen. Damit könnte ich auch mit 1.13 automatisch die 1.11.3 Updaten. Aber das ist nicht shclimm da die vorherige Versiopn eh beim Major Update deinstalliert wird. Richtig?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 16 January 2007 - 17:35

QUOTE
Die Releases für beide müssten dann den selben ProducktCode, den selben Upgrade Code (weil die Upgrades ohne Änderung der kundenspezifischen Dateien laufen und in Zukunft vielleicht doch eine Version existiert, die alle Kunden gleichzeitig Updaten kann) aber verschiedenen PackageCodes ausweisen? Ist das so richtig.
Ja, richtig.
QUOTE
Wenn ich verschiedene PackageCodes verwalten will, dann muss ich für jeden Kunden ein separates BASIC-MSI Projekt erstellen? Oder gibt es eine günstigere Variante, alle Kundne in ein Projekt zu packen?
Jedes Mal wenn dueinen Build durchführst vergibt InstallShield automatisch einen neuen PackageCode (sofern du diese Option nicht abgestellt hast in den Release-Settings). Du brauchst nur ein Projekt. Du kannst sogar innerhalb des Projekts kundenspezifische Releases anlegen und über Release-Flags die einzubindenden Dateien festlegen.
QUOTE
Noch eine Verständnisfrage zu UpdateCode.
Strenggenommen heisst das Property UpgradeCode. Im Prinzip sollten alle Versionen den gleichen UpgradeCode haben. Dann reicht ein einziger MajorUpgrade Eintrag im Projekt, um jede ältere Version zu deinstallieren und durch die aktuelle Version zu ersetzen. Falls du aus irgendwelchen Gründen den UpgradeCode änderst kannst du trotzdem ein Upgrade erstellen dass jede beliebige Altversion entfernen kann, du musst dann aber für jeden UpgradeCode einen eigenen Eintrag anlegen.
zusätzlich empfiehlt es sich, einen weietren Eintrag anzulegen der ein Downgrade verhindert.
Der MajorUpgrade Eintrag sucht im Prinzip nach einem vrohandenen Produkt mit dem angegebenen UpgradeCode. Wenn eines vorhanden ist wird die Versionnummer verglichen. Die Relation kannst du angeben, normalerweise macht man "beliebige frühere Version" und lässt die dann deinstallieren. Man kann aber auch sagen "höhere Verison" und nicht deinstallieren sondern "detect only" (in den erweiterten Einstellungen). Dann bekommt man ein Property das gesetzt wird wenn eine höhere Version bereits vorhanden ist. Mit diesem Property als Bedingung kann man dann eine fehlermeldung anzeigen.