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

Ganz allgemein zu Upgrades und Patches


9 replies to this topic

Yasutani

Yasutani
  • Members
  • 44 posts

Posted 25 November 2004 - 17:22

Hallo,

ich kapiere die Zusammenhänge zwischen Upgrade und Patches und meinen Basisprojekt nicht :/

Die Anforderung ist einfach neuere Versionen meiner Dateien + neue Dateien auf dem Zielrechner zu installieren und Dateien die nicht mehr gebraucht werden zu entfernen.

Es geht um eine Upgrade ohne Versionsnummernänderung - also ein kleines Ugrade oder Patch.

Ich hab mir jetzt mehrmals die Hilfe durchgelesen aber ich kapiers nicht - ein Upgrade im gleichen Projekt anlegen? Wo sind die neuen Dateien? - oder gebe ich dann nur noch die an welche zu den Upgrade gehören? Wie kann der Setup dann erkennen welche er löschen soll?

Vielleicht hat jemand ein bisschen Zeit und kann mich ein Stückchen auf den richtigen Weg bringen wink.gif

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 25 November 2004 - 17:33

Allgemein erstellst du die neue Version aus dem gleichen Projekt. Wenn du willst, kannst du dann einen Patch als Differenz zwichen alter und neuer Version erstellen (d.h. das Release der alten Version solltest du aufheben). Alternativ kann du ein QuickPatch Projekt anlegen und dort einfach nur die geänderten Dateien angeben. Du kannst die neue Version aber auch als Vollsetup verteilen, Das kann dann sowohl für Erstinstalaltion als auch für Upgrades verwendet werden.

Vorsicht: Es gibt 3 Typen von Upgrades: Small, Minor und Major. Small und Minor sind sehr ähnlich und unterliegen beide sehr strengen Regeln. So kann man zum Beispiel nicht eine Komponente aus dem Setup entfernen. (Näheres in der MSI Hilfe und im Bereich MSI Upgrades hier auf InstallSite). Major Upgrades unterliegen diesen Beschränkungen nicht, denn sie löschen normalerweise zuerst komplett die alte Version und installieren dann die neue.

In der Entwicklungsumgebung muss du nur für Major Upgrades Angaben machen. Für Small und Minor Updates ist das optional und wird nur für die Update-Validierung verwendet (die die o.g. Regeln überprüft)

Yasutani

Yasutani
  • Members
  • 44 posts

Posted 26 November 2004 - 10:51

Danke für die schnelle Antwort!

Ein Geringeres Update ist wohl am ehesten geignet für meine Zwecke.

Mal für Dummies:

Ich kopiere den Setup. Die Kopie ist das Ausgangsprojekt für das Update.

Was mache ich mit den Dateien, Benutzerdefinierten Vorgängen und Registryeinträgen?

Die Registryeinträge vom Basisprojekt sollen z.B nicht nochmal eingetragen werden. Neue Registryeinträge kommen jedoch hinzu.

Das gleiche für die Benutzerdefinierten Vorgänge - die aus dem Basissetup sollen nicht mehr ausgeführt werden aber neue sollen ausgeführt werden.

Bei den Dateien sollen natürlich Versionen mit neuerer Versionsnummer installiert werden und evtl. auch Dateien gelöscht werden.

Nach dem gesunden Menschenverstand würde ich sagen alle Benutzerdefinierten Vorgänge und Registryschlüssel, die nicht mehr ausgeführt werden sollen, aus dem Setup löschen.

Bei den Dateien müssten die alten drinbleiben und die neuen einfach überschrieben werden - dann kann IS das auch abgleichen. Vorhandene Dateien aus dem Setup löschen würde bedeuten das auch beim Update die Datei auf dem Zielsystem gelöscht wird.

Das sind nur Vermutungen - wie funktioniert das wirklich?

Die nächste Frage - welche Sequenz wird ausgeführt bei einem Update?

Beim Update muss ich auf ein Release verweisen - ich muss also nochmals das BasisRelease als CD-Installation erstellen? (ausgeliefert werden natürlich nur komprimierte Versionen)

Ich hab das einfach noch nicht kapiert und denke wohl völlig falsch über die Updates :/

Gibt es eine Anleitung um ein Geringeres Update zu erstellen für Dummies?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2004 - 18:20

Du musst eigentlich nichts rauslöschen. Wenn eine Datei sich nicht ändert, wird sie nicht überschrieben. Beim Erstellen eines Patches (.msp) wird die Differenz der beiden MSI Pakete erstellt, d.h. die Datei fällt automatisch raus.
Anders ist es mit Registry-Einträgen: die werden normalerweise überschrieben, und zwar nicht nur beim Update sondern auch z.B. beim Repair. Am besten liest man die aktuellen Werte zu Beginn des Setups aus der Registry (in der Systemsuche) und schreibt diese dann iweder zurück.
Auch benutzerdefinierte werden wieder ausgeführt, wenn sie nicht mit einer bedingung versehen sind, die das verhindert, z.B. Not Installed (dann wird die Aktion nur beim ersten Mal ausgeführt)
Beim Update wird wie bei der Installation die Install UI und die Install Execute Sequenz ausgeführt. Das ist für Ersteinstalaltion, Modifikation, Reparatur, Deinstallation und Update das gleiche.
Du kannst eine AdminInstallation der alten Version ausführen (entpackt die MSI-Datei) um auf die alte MSI-Datei zu verweisen.

Yasutani

Yasutani
  • Members
  • 44 posts

Posted 02 December 2004 - 14:27

Danke für die ausführliche Antwort! smile.gif

Leider habe ich noch einige Probleme...

Die neuen Dateien habe ich eingefügt und ein neues Release erstellt. Egal ob Geringeres Update oder Patch (Latest = neues Release, Previous = Basisinstallation) es tritt folgender Fehler auf:

Val0006: The Component '%s' identified by ComponentID '%s' is missing from the newest version of your setup. You cannot delete components and still do a minor/small upgrade. You must perform a major upgrade.

Der Fehler tritt für mehrere Komponennten auf. ('%s' = GUID)

Laut einem Post in diesem Forum (Dev Studio) - tritt der Fehler bei dynamischen Komponennten auf die Unterverzeichnisse einbinden.

Nochmals zu der Fehlermeldung - ich habe keine Komponennten gelöscht oder verändert.

Kennt jemand diesen Fehler?


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 03 December 2004 - 15:07

Bist du sicher dass du:
- keine Komponenten entfernt hast
- keine Komponente in ein anderes Feature verschoben hast
- keine Komponenten-GUID geändert hast
- keine dynamischen Verknüpfungen für Unterordner verwendest
- bei Patch Optimierung die alte MSI-Datei angegeben hast, falls du dynamische Verknüpfungen vendest
Alles was für Komponenten gilt, gilt auch für Merge Module, d.h. du darfst keine Module entfernen und auch nicht in einem Modul eine Komponente entfernen, usw.

Durchsuche doch mal dein Projekt nach der GUID (Direct Editor, Tabelle Component). Dann weist du über welche Komponente er stolpert.

Yasutani

Yasutani
  • Members
  • 44 posts

Posted 03 December 2004 - 18:34

Hallo Stefan,

das war das Problem, ich verwende:

- Dynamische Dateilinks die Unterordner einbeziehen
- Hatte bei Patch-Optimierung nicht die alte MSI-Datei angegeben.

Mit der Patch-Optimierung klappt das jetzt - leider wieder andere Fehler.

Vielleicht zur Info - einige Komponenten besitzen keine Schlüsseldatei und alle Dateien werden über einen Dynamischen Dateilink in den Setup aufgenommen.

Das sind z.B: reine Java-Verzeichnisse mit einer erheblichen Menge an Unterordnern und Dateien.

Bei dem Patch kommt der Fehler Val0004: Datei hat sich geändert aber nicht die Schlüsselkomponente - die Datei wird bei einem Update nicht aktualisiert werden.

Das Problem tritt bei Dateien ohne Version auf - z.B.: txt, dat, jar, etc.
Die Komponenten dieser Dateien werden über einen Dyn. Dateilink hinzugefügt und es gibt keine Schlüsseldatei (wie auch - geht ja nicht bei Dyn. Dat.Lnk).
Es scheint aber unabhängig zu sein ob sich die Datei in einem Unterordner befindet.

Ich bin jetzt soweit das ich für diese Komponenten eine Dummyschlüsseldatei erzeugt habe - persönlich finde ich das eher einen schmutzigen Trick.

Langsam frage ich wie ihr eure Setups macht? Bei Suche hier im Forum und im Netz gibt es fast oder gar keine Treffer zu meinen Problemen - noch dazu schätze ich meinen Setup eher als Standardanfängersetup ein der nichts besonderes beinhaltet (ausser vielleicht eine grosse Menge an Daten und Dateien).

Mal ganz generell:

- keine dynamischen Links verwenden
- auf keinen Fall Unterordner in dynamischen Links verwenden

Bleibt nur noch jede Datei einzeln in eine Komponente zu verpacken und diese als Schlüsseldatei festzulegen? Das kann es nicht sein...

Wie fängt man einen Setup im MSI-Format richtig an? Ich persönlich habe das Gefühl lauter Zeitbomben in den Setup eingebaut zu haben. Zum Glück ist der Basissetup nicht ausgeliefert - ich kann also noch Veränderungen an ihm vornehmen.

Edited by Yasutani, 04 December 2004 - 17:15.


Yasutani

Yasutani
  • Members
  • 44 posts

Posted 04 December 2004 - 15:40

mhm...

für die Komponenten mit einem Dynamischen Dateilink ohne Schlüsseldatei gibt es jetzt im Basissetup eine Dummyexe mit Versionsnummer. Diese Datei ist Schlüsseldatei.

Im Basissetup Schlüsseldatei Versionsnummer 2.0.0.0
Im Servicepack Schlüsseldatei Versionsnummer 2.0.0.1

Trotzdem wieder Fehler Val0004 (Die Datei hat sich geändert aber die Schlüsseldatei nicht... usw)

Ich bin wirklich ratlos...

Yasutani

Yasutani
  • Members
  • 44 posts

Posted 04 December 2004 - 16:59

Laut einem Artikel zum Dev Studio:

http://support.insta...ticleid=Q108842

... gab es beim DevStudio einen Bug:

Additional Information
This error is also known to occur incorrectly in InstallShield Developer 8.02 and earlier versions due to a bug. If it detects a file whose version has changed in the fourth field (i.e., 1.00.0000.1234) when compared to the previous version, it displays this validation error incorrectly. It is possible to change a file version in the fourth field, and it will be recognized accordingly. In this case, this error can be safely ignored. This issue has been resolved in DevStudio 9.0 and later.

Den Bug gibt es in IS X auch.

Mit der Versionsnummernänderung bei der Minor-Version für die Schlüsseldatei klappt es jetzt...

... bis auf Komponenten von Dynamischen Dateilinks die sich in Unterordnern befinden.

Ich mache für das Problem mit den Unterordnern einen eigenen Thread auf - es passt eigentlich nicht mehr zu diesem Thema.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 06 December 2004 - 19:20

Dynamische Links zu Unterordnern vertragen sich nicht mit Minor Updates. Hier funktioniert die "Patch Optimierung" nicht richtig.