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

Probleme beim Major Update


8 replies to this topic

kunmar1234

kunmar1234
  • Full Members
  • 10 posts

Posted 29 February 2012 - 16:07

Hallo,

ich bin mit dem Thema Installshield kaum vertraut und habe die Aufgabe von meinem Arbeitskollegen übernommen.

Bei der Erstellung eines Major Updates wird immer die 2.Stelle hochgezählt (3.6.0.1 -> 3.7.0.1) und ProductCode geändert.

Hier mein Problem:

Bei einem MajorUpdate von 3.6.0.1 -> 3.7.0.1 taucht die Anwendung mehrmals in der Windows-Systemsteuerung -> Software auf.

Es sind also 2 Anwendung (1x mit 3.6.0.1 und 1x mit 3.7.0.1) vorhanden.

Wie kann ich sicherstellen, das die Anwendung überschrieben/aktualisert wird und nicht 2 Mal auftaucht?


Grüße

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 February 2012 - 17:57

Entweder passt etwas nicht bei den Einstellungen für das Major Upgrade. Prüfe mal, welcher Versionsbereich für die Erkennung der Altversionen eingetragen ist.
Es könnte auch daran liegen, dass du den Projekttyp "InstallScript MSI" verwendest. Da gab es glaube ich in manchen InstallShield-Versionen Probleme mit Major Upgrades. Aber wenn es bisher funktioniert hat, dürfte das wohl eher nicht das Problem sein. (Außer du hast InstallShield neu installiert und dabei ein Servicepack oder Hotfix vergessen)

kunmar1234

kunmar1234
  • Full Members
  • 10 posts

Posted 01 March 2012 - 08:12

Danke, für die schnelle Antwort.

Das Problem bestand schon vorher, wurde aber nicht als schwerwiegend angesehen...bis jetzt.
Ist mit "Versionsbereich für die Erkennung der Altversionen" der Reiter "Common" unter Media -> Upgrades -> Upgrade Windows Installer Setup gemeint?
Es ist eine Minimum Version (3.7.0.1.) und Maximum Version (3.7.0.1.) festgelegt.


kunmar1234

kunmar1234
  • Full Members
  • 10 posts

Posted 02 March 2012 - 13:04

Hallo,

zum besseres Verständnis und für Übersichtlichkeit habe ich mir mal ein "UpdateTest"-Projekt erstellt, mit 5 Dateien.

Nun möchte ich mein Setup von Version 1.1.0.0 auf 1.3.0.0 updaten.

Folgende Einstellung habe ich vorgenommen um ein MajorUpdate durchzuführen:

1. Änderung des Package Codes
2. Änderung des Product Codes
3. Änderung der Product vERsion von 1.1.0.0 auf 1.3.0.0

4. folgende Einstellung habe ich unter "Upgrades" -> "Prepare Setup For Upgrade Scenarios" -> "Upgrade Windows Installer Setup" - Reiter "Advanced" vorgenommen:

Upgrade Code = {E266714A-5797-43C2-B7D0-73B7560CA296}
Minimum Version = 1.1.0.0
Include Minimum Version = Yes
Maximum Version = 1.3.0.0
Include Maximum Version = Yes

Detect Only = Yes
Detect Property ISACTIONPROP1
Continue On Failure = No
Migrate Feature States = Yes


Das Problem ist, das nachdem das Setup 1.3.0.0 ausgeführt wurde und die DAteien im Ordner aktualisiert wurden, die Software unter Systemsteuerung -> Software 2mal vorhanden ist (1mal Version 1.1.0.0 und 1mal Version 1.3.0.0)

Was habe ich in Installshield falsch konfiguriert?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 06 March 2012 - 17:49

Es liegt daran:
Detect Only = Yes

Das bedeutet, dass der Installer nur nach der Altversion suchen und das entsprechende Propertty setzen soll, sie aber nicht deinstallieren soll. Man verwendet diese Einstellung normalerweise, um neuere Versionen zu erkennen und das Setup abzubrechen (Verhindern eines Downgrade).

Außerdem würde ich
Include Maximum Version = No
stellen, wenn die Maximum Version gleich der aktuellen Version des Setup ist, sonst würde es sich theoretisch ja selbst erkenen (tut es nicht weil die Upgrade-Tabelle nur verwendet wird, wenn der ProductCode unterschiedlich ist).

kunmar1234

kunmar1234
  • Full Members
  • 10 posts

Posted 07 March 2012 - 09:21

Vielen DANK, der Tip hat geholfen, aber....

Ich habe bei meinem "UpdateTest"-Projekt entsprechen die Einstellungen geändert (Detect Only = No und Include Maximum Version = No).
Es hat funktioniert....die Anwendung wird jetzt unter Systemsteuerung -> Software nicht mehr 2 mal aufgelistet.

Die Einstellung von dem "UpdateTest"-Projekt habe ich in mein eigentliches Problem-Projekt (siehe 1.Post Erstellt am 2012-02-29 16:07) übernommen und stoße gleich auf ein neues Problem.

Ich habe das Setup 3.6.0.1 auf 3.7.0.1 geupdatet. Beide Anwendungen werden in der Systemsteuerung -> Software angezeigt (beide Setups und Upgrade-Einstellungen im Installshield sind von meinem Kollegen).

Das Setup 3.8.0.1 habe ICH erstellt, mit folgender Konfiguration:

- Product Code geändert (für ein MajorUpdate)

- Tab Common:
Major Upgrade -> Products sharing my Upgarde Code
Product Version -> Any earlier version

- Tab Advanced:
Upgrade Code -> {00000000-0000-0000-0000-000000000000}
Include Minimum Version = Yes
Maximum Version = ***ALL_VERSIONS***
Include Maximum Version = No
Exclude Specified Languages = No
Detect Only = No
Detect Property = ISFOUNDNEWERPRODUCTVERSION
Continue On Failure = No
Migrate Feature States = Yes

Wenn ich nun die Version 3.7.0.1 auf 3.8.0.1 aktualisieren möchte, kommte folgende Fehlermeldung:

"Auf diesem Computer ist bereits eine neuere Version dieser Anwendung installiert. Um diese Version zu installieren, müssen Sie zunächst die neuere Version deinstallieren. Klicken Sie auf "OK", um den Assitenten zu schließen."

Edited by kunmar1234, 07 March 2012 - 10:22.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 07 March 2012 - 12:34

Wie man am Propertynamen ISFOUNDNEWERPRODUCTVERSION erkennt, handelt es sich hier um den Eintrag, der das Downgrade verhindern soll. Den hast du jetzt zwar modifiziert um damit ein Major Upgrade zu machen, aber die Fehlermeldung stecht ja immer noch in der Sequenz. Aber bevor du an der auch noch "rumbastelst" muss ich fragen, warum du diesen ISPreventDowngrade Eintrag versuchst umzubauen. Erstelle besser einen neuen Eintrag für das Upgrade und lass den ISPreventDowngrade wie er standardmäßig ist.

kunmar1234

kunmar1234
  • Full Members
  • 10 posts

Posted 07 March 2012 - 16:15

Ich habe den alten ISPreventDowngrade-Eintrag gelöscht und ein neuen Eintrag erstellt (mit Defaultwerten) und es funktioniert...DANKE.

2 Fragen habe ich aber noch:

Warum wurde beim Erstellen des neuen ISPreventDowngrade-Eintrags automatisch das (Detect Property) Property "ISACTIONPRO1" erzeugt und was macht es genau?

Das Property "ISFOUNDNEWERPRODUCTVERSION" ist doch dafür da,dass es das System auf eine neuere Version überprüft und abbricht wenn ein neuere Version vorhanden ist,oder?





Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 09 March 2012 - 14:04

QUOTE
Warum wurde beim Erstellen des neuen ISPreventDowngrade-Eintrags automatisch das (Detect Property) Property "ISACTIONPRO1" erzeugt und was macht es genau?

Immer wenn man einen neuen Eintrag anlegt, vergibt InstallShield automatisch ein Property nach diesem Namensschema. Windows Installer verwendet es, um die alte Version zu entfernen, im Property steht dann der ProductCode der alten Version. Du kannst den Propertynamen aber manuell abändern in etwas aussagekräftigeres, wenn du willst.

QUOTE
Das Property "ISFOUNDNEWERPRODUCTVERSION" ist doch dafür da,dass es das System auf eine neuere Version überprüft und abbricht wenn ein neuere Version vorhanden ist,oder?

Ja, und deshalb enthält jedes neue Projekt automatisch einen speziellen Major Upgrade Eintrag mit diesem Property und entsprechenden Versionseinstellungen sowie Detect only = yes.
ISFOUNDNEWERPRODUCTVERSION wird in der Bedingung der entsprechende Fehlermeldungs-Custom Action verwendet. Das Property muss also so heißen, sonst funktioniert der Downgrade-Schutz nicht.