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

Patching funktioniert nicht


9 replies to this topic

DoSDev

DoSDev
  • Full Members
  • 17 posts

Posted 12 March 2008 - 18:06

Hallo Zusammen,

nach langem Suchen in diesem Forum, glaube ich irgendwie der erste mit diesem Problem zu sein. Falls nicht, kann mir jemand den Link zum entsprechenden Post weitergeben?

Mein derzeitige Herausforderung ist: "Einen Patch zu erstellen (klinkt ja gar nicht mal so schwer)" ;-)

Also ganz kurz und bündig:
- Habe ein MSI X und ein MSI Y.
- X enthält DLL's, OCXen usw. die fehlerhaft sind.
- Y enthält die selben nur ohne Fehler.
- X per administrative install ins Verzeichnis A entpackt.
- Y per administrative install ins Verzeichnis B entpackt.
- Habe ein PCP file erstellt.
- Habe msimsp mit PCP + A\X.msi + B\Y.msi aufgerufen.
- Etwas warten...
- Fertig ist die Z.msp.

Nun zu meiner Frage, wenn ich auf einen Rechner als erstes das MSI X installiert habe und anschließend das MSP Z installiere (alles per Doppelklick, ohne CMD), dann sollten alle geänderten Dateien (DLL's und OCXen), die normalerweise im MSI Y enthalten sind auf dem Rechner aktualisiert worden sein.
Interessanterweise (was gleichzeitig mein Problem ist) werden nicht alle Dateien aktualisiert.

Was mache ich falsch?

Danke schon im Voraus für eure Bemühungen.
Zur Info verwende zum Erstellen der MSI's und PCP's das Windows Installer Xml Toolset (WiX), falls euch das weiterhilft.

wink.gif

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 13 March 2008 - 13:40

Kommt darauf an, was alles so in z.msp drin steht. Standardmäßig aktualisiert ein Doppelklick auf eine msp erst mal NUR die msi-Datenbank. Erst ein anschließender Reinstall aktualisiert auch die Dateien, jendefalls in älteren Versionen der MSI Runtime. Welche MSI-Version ist denn auf dem Testsystem?
Versuche doch mal einer Reparaturinstallation über die Systemsteuerung. Sind danach die Dateien aktualisiert?
Es kann aber auch sein, dass du Komponenten-Upgrade-Regeln verletzt hast. I dem Fall hilft ein Log der Patch-Installation (http://www.msifaq.de/a/1022.htm) in dem dann SELMGR Fehlermeldung zu finden sind.

DoSDev

DoSDev
  • Full Members
  • 17 posts

Posted 13 March 2008 - 19:45

Hallo Stefan,

danke, dass Du dich meiner annimmst.

Zu Deinen Fragen bzw. Vorschlägen:
- OS: Windows XP SP2 (32Bit)
- MSI: Windows Installer 3.1 (KB893803)

Frage: "Wie ist der Patch konfiguriert?"
- Table: "MsiPatchMetadata" (im MSP)
-- Spalten: Company, Property, Value
-- Werte (Zeile 1): "", Description, MyDescription
-- Werte (Zeile 2): "", AllowRemoval, 0
-- Werte (Zeile 3): "", Classification, Hotfix
-- Werte (Zeile 4): "", DisplayName, Patch 001
-- Werte (Zeile 5): "", ManufactureName, MyCompanyName
-- Werte (Zeile 6): "", MoreInfoURL, MyWebsite
-- Werte (Zeile 7): "", TargetProductName, MyProductName
-- Werte (Zeile 8): "", CreationTimeUTC, <Datum Uhrzeit>

- Table: "Properties" (im PCP)
-- Spalten: Name, Value
-- Werte (Zeile 1): MinimumRequiredMsiVersion, 300
-- Werte (Zeile 2): PatchGUID, {...}
-- Werte (Zeile 3): AllowProductVersionMajorMismatches, 0
-- Werte (Zeile 4): DontRemoveTempFolderWhenFinished, 1
-- Werte (Zeile 5): IncludeWholeFilesOnly, 1

Frage: "Komponent-Updateregel verletzt?"
Meines Wissens nicht. Das einzige was die Ursache sein kann, ist dass die Version der DLL's bzw. OCXen sich nicht geändert hat. Dies sollte aber trotzdem funktionieren, da sich der Inhalt dieser, also auch der Hashwert, geändert hat. Des Weiteren werden ja, sogar einzelne DLL's trotzdem aktualisiert, aber nicht alle. Zudem haben einfache Dateien wie Textfiles und Co. ja auch keine Versionsinformation.

Vorschlag: "MSI X installieren, dann MSP Z und dann Repair."
- Die Anwendung funktioniert wieder.
- Alle Dateien wurden richtig aktualisiert.

Vorschlag: "Alles mitloggen und nach SELMGR suchen"
- Der Inhalt der Logfiles sieht ganz gut aus (meiner Meinung nach).

laugh.gif Überragend, dass das schon einmal funktioniert.

Nun habe ich aber noch eine Frage biggrin.gif :
Wie muss ich meinen Patch konfigurieren, dass der User nicht nach der Installation nachträglich einen Repair fahren muss?

Danke für eure Bemühungen.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 14 March 2008 - 15:51

Versuchs mal so:
msiexec /p patch.msp REINSTALL=[Feature list] REINSTALLMODE=omus
bzw. mit REINSTALL=ALL
Alternativ kannst du das REINSTALL auch innerhalb der Installation setzen, z.B. auf dem "Weiter" Button des PatchWelcome Dialogs.

DoSDev

DoSDev
  • Full Members
  • 17 posts

Posted 17 March 2008 - 17:19

Hallo Stefan,

"Alternativ kannst du das REINSTALL auch innerhalb der Installation setzen, z.B. auf dem "Weiter" Button des PatchWelcome Dialogs."
Kein schlechter Vorschlag, werd ich dann gleich mal einbauen.
Dann sollte das ganze etwas benutzerfreundlicher sein.
Danke nochmal für Deine Unterstützung.

Mit freundlichen Grüßen

DoSDev

DoSDev

DoSDev
  • Full Members
  • 17 posts

Posted 26 March 2008 - 14:05

Hallo Stefan,

nun habe ich doch noch eine Frage. Gibt es eine Möglichkeit während der Ausführung eines Patches herauszufinden (z.B. auf einen Dialog, evtl. über eine Property) ob die aktuelle Installation eine Patch-Installation ist?

Danke nochmal.

Mit freundlichen Grüßen

DoSDev

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 01 April 2008 - 13:42

Ja, in dem Fall ist das Property PATCH gesetzt.

DoSDev

DoSDev
  • Full Members
  • 17 posts

Posted 11 April 2008 - 08:59

Hallo Stefan,

nun habe ich doch noch ein Problem, was das Patching angeht.

Folgendes Szenario:
- MSI installiert.
= Funktioniert einwandfrei.
- 1. MSP installiert mit REINSTALL=ALL und REINSTALLMODE=ecmus.
= Funktioniert einwandfrei.
- 2. MSP installiert mit REINSTALL=ALL und REINSTALLMODE=ecmus.
= Die Dateien die in diesem Patch enthalten sind, werden nicht aktualisiert.
= MSI meldet auch keinen Fehler.

Zur Info:
- In beiden Patchen werden jeweils immer andere Dateien gepatcht.
- Die Id der PatchFamily ist immer die gleiche.
- Das Einzige was ich bei jeden PatchBuild ändere, ist die Id des Patches und die ComponentRef's der PatchFamily (alle alten ComponentRef's enferne ich immer zuvor).
- Ich habe den ReinstallMode ECMUS gewählt da der von Dir vorgeschlagene ReinstallMode OMUS nicht funktionierte und dieser standardmäßig von meinen Setup beim Repair verwendet wird.

Kannst Du mir da oder jemand anderes aus dem Forum weiterhelfen?
Vielen Danke für Eure Bemühungen

Mit freundlichen Grüßen

DoSDev

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 April 2008 - 17:04

Ich rate dringend zu einem Logfile. Dort achte auf SELMR Meldungen und auf die Angaben zum Überschreiben von Dateien.

DoSDev

DoSDev
  • Full Members
  • 17 posts

Posted 10 June 2008 - 09:13

Hallo Stefan,

nach sehr langen herumexperimentieren und ändern von jeder einzelnen Property, hab ich es endlich herausgefunden (ausgerechnet die letzte Property von allen, die ich immer wieder geändert habe). Ich musste lediglich bei jeden neuen PatchBuild die Versionsnummer der PatchFamily ändern. Bisher hatte ich immer die gleiche PatchVersion verwendet. Eigentlich auch ganz logisch. Indirekt bin ich auf die Lösung durch das Buch "Windows Installer 3.1" von "Andreas Kerl" gekommen.

Nochmal Danke für Deine Bemühungen

DoSDev


PS: Sorry, dass ich mich so lange nicht gemeldet habe.