Ganz allgemein zu Upgrades und Patches
Posted 25 November 2004 - 17:22
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
Posted 25 November 2004 - 17:33
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)
Stefan Krüger
InstallSite.org twitter facebook
Posted 26 November 2004 - 10:51
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?
Posted 27 November 2004 - 18:20
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.
Stefan Krüger
InstallSite.org twitter facebook
Posted 02 December 2004 - 14:27
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?
Posted 03 December 2004 - 15:07
- 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.
Stefan Krüger
InstallSite.org twitter facebook
Posted 03 December 2004 - 18:34
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.
Posted 04 December 2004 - 15:40
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...
Posted 04 December 2004 - 16:59
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.
Posted 06 December 2004 - 19:20
Stefan Krüger
InstallSite.org twitter facebook