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.

Patch funktioniert bei bestimmten Dateien nicht
Started by
ts1
, Oct 05 2009 14:13
6 replies to this topic
Posted 05 October 2009 - 14:13
Hallo,
ein Basic-MSI Projekt soll gepatcht werden.
Seltsamerweise werden einige Dateien nicht gepatcht, obwohl binär unterschiedlich.
Als ein Beispiel die "normal.ddb"
In der Patch Modified Files List ist die Datei noch drin,
bei Action InstallFiles nur noch in der Liste aber nicht beim caching,
bei PatchFiles fehlt sie ganz
Auszug aus der patch.log:
...
MSI (s) (E0:D0) [14:56:51:775]: Patch Modified Files List:
MSI (s) (E0:D0) [14:56:51:775]: File = filedialog.dll: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sse.vif: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = printerdialogs.dll: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sse.exe: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = assist.htb: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = contexthelp.htb: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = colordefs.ini: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sse.csf: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = support.ini: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sysinfo.csf: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = normal.ddb: Final State = Install
...
Aktion gestartet um 14:56:53: InstallFiles.
MSI (s) (E0:D0) [14:56:53:056]: Patch Modified Files List:
MSI (s) (E0:D0) [14:56:53:056]: File = filedialog.dll: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sse.vif: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = printerdialogs.dll: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sse.exe: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = assist.htb: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = contexthelp.htb: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = colordefs.ini: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sse.csf: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = support.ini: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sysinfo.csf: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = normal.ddb: Final State = Install
MSI (s) (E0:D0) [14:56:53:103]: Note: 1: 2205 2: 3: MsiPatchOldAssemblyFile
MSI (s) (E0:D0) [14:56:53:103]: Note: 1: 2228 2: 3: MsiPatchOldAssemblyFile 4: SELECT `MsiPatchOldAssemblyFile`.`Assembly_` FROM `MsiPatchOldAssemblyFile` WHERE `MsiPatchOldAssemblyFile`.`File_` = ?
MSI (s) (E0:D0) [14:56:53:103]: Caching assist.htb from C:\Programme\BILDSteuer\2010\Help\Assist.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:103]: Caching contexthelp.htb from C:\Programme\BILDSteuer\2010\Help\ContextHelp.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching filedialog.dll from C:\Programme\BILDSteuer\2010\FileDialog.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching printerdialogs.dll from C:\Programme\BILDSteuer\2010\PrinterDialogs.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.exe from C:\Programme\BILDSteuer\2010\SSE.exe for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching colordefs.ini from C:\Programme\BILDSteuer\2010\ColorDefs.ini for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sysinfo.csf from C:\Programme\BILDSteuer\2010\SysInfo.csf for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.vif from C:\Programme\BILDSteuer\2010\sse.vif for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.csf from C:\Programme\BILDSteuer\2010\sse.csf for baseline 0
Aktion beendet um 14:56:53: InstallFiles. Rückgabewert 1.
MSI (s) (E0:D0) [14:56:53:118]: Doing action: PatchFiles
Aktion gestartet um 14:56:53: PatchFiles.
MSI (s) (E0:D0) [14:56:53:118]: Caching filedialog.dll from C:\Programme\BILDSteuer\2010\FileDialog.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching printerdialogs.dll from C:\Programme\BILDSteuer\2010\PrinterDialogs.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.exe from C:\Programme\BILDSteuer\2010\SSE.exe for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching assist.htb from C:\Programme\BILDSteuer\2010\Help\Assist.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching contexthelp.htb from C:\Programme\BILDSteuer\2010\Help\ContextHelp.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching colordefs.ini from C:\Programme\BILDSteuer\2010\ColorDefs.ini for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching support.ini from C:\Programme\BILDSteuer\2010\Support.ini for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sysinfo.csf from C:\Programme\BILDSteuer\2010\SysInfo.csf for baseline 0
Aktion beendet um 14:56:53: PatchFiles. Rückgabewert 1.
Die Datei ist ganz normal explizit aufgenommen (kein dynamic link) und es ist egal, ob sie KeyFile ist oder nicht. Sie unterliegt keinen Installationbedingungen, ist immer dabei.
Wie kann ich das korrigieren?
ein Basic-MSI Projekt soll gepatcht werden.
Seltsamerweise werden einige Dateien nicht gepatcht, obwohl binär unterschiedlich.
Als ein Beispiel die "normal.ddb"
In der Patch Modified Files List ist die Datei noch drin,
bei Action InstallFiles nur noch in der Liste aber nicht beim caching,
bei PatchFiles fehlt sie ganz
Auszug aus der patch.log:
...
MSI (s) (E0:D0) [14:56:51:775]: Patch Modified Files List:
MSI (s) (E0:D0) [14:56:51:775]: File = filedialog.dll: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sse.vif: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = printerdialogs.dll: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sse.exe: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = assist.htb: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = contexthelp.htb: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = colordefs.ini: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sse.csf: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = support.ini: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = sysinfo.csf: Final State = Install
MSI (s) (E0:D0) [14:56:51:775]: File = normal.ddb: Final State = Install
...
Aktion gestartet um 14:56:53: InstallFiles.
MSI (s) (E0:D0) [14:56:53:056]: Patch Modified Files List:
MSI (s) (E0:D0) [14:56:53:056]: File = filedialog.dll: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sse.vif: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = printerdialogs.dll: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sse.exe: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = assist.htb: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = contexthelp.htb: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = colordefs.ini: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sse.csf: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = support.ini: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = sysinfo.csf: Final State = Install
MSI (s) (E0:D0) [14:56:53:056]: File = normal.ddb: Final State = Install
MSI (s) (E0:D0) [14:56:53:103]: Note: 1: 2205 2: 3: MsiPatchOldAssemblyFile
MSI (s) (E0:D0) [14:56:53:103]: Note: 1: 2228 2: 3: MsiPatchOldAssemblyFile 4: SELECT `MsiPatchOldAssemblyFile`.`Assembly_` FROM `MsiPatchOldAssemblyFile` WHERE `MsiPatchOldAssemblyFile`.`File_` = ?
MSI (s) (E0:D0) [14:56:53:103]: Caching assist.htb from C:\Programme\BILDSteuer\2010\Help\Assist.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:103]: Caching contexthelp.htb from C:\Programme\BILDSteuer\2010\Help\ContextHelp.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching filedialog.dll from C:\Programme\BILDSteuer\2010\FileDialog.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching printerdialogs.dll from C:\Programme\BILDSteuer\2010\PrinterDialogs.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.exe from C:\Programme\BILDSteuer\2010\SSE.exe for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching colordefs.ini from C:\Programme\BILDSteuer\2010\ColorDefs.ini for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sysinfo.csf from C:\Programme\BILDSteuer\2010\SysInfo.csf for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.vif from C:\Programme\BILDSteuer\2010\sse.vif for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.csf from C:\Programme\BILDSteuer\2010\sse.csf for baseline 0
Aktion beendet um 14:56:53: InstallFiles. Rückgabewert 1.
MSI (s) (E0:D0) [14:56:53:118]: Doing action: PatchFiles
Aktion gestartet um 14:56:53: PatchFiles.
MSI (s) (E0:D0) [14:56:53:118]: Caching filedialog.dll from C:\Programme\BILDSteuer\2010\FileDialog.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching printerdialogs.dll from C:\Programme\BILDSteuer\2010\PrinterDialogs.dll for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sse.exe from C:\Programme\BILDSteuer\2010\SSE.exe for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching assist.htb from C:\Programme\BILDSteuer\2010\Help\Assist.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching contexthelp.htb from C:\Programme\BILDSteuer\2010\Help\ContextHelp.htb for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching colordefs.ini from C:\Programme\BILDSteuer\2010\ColorDefs.ini for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching support.ini from C:\Programme\BILDSteuer\2010\Support.ini for baseline 0
MSI (s) (E0:D0) [14:56:53:118]: Caching sysinfo.csf from C:\Programme\BILDSteuer\2010\SysInfo.csf for baseline 0
Aktion beendet um 14:56:53: PatchFiles. Rückgabewert 1.
Die Datei ist ganz normal explizit aufgenommen (kein dynamic link) und es ist egal, ob sie KeyFile ist oder nicht. Sie unterliegt keinen Installationbedingungen, ist immer dabei.
Wie kann ich das korrigieren?
Posted 06 October 2009 - 12:35
Und die Datei im Zielverzeichnis hat sich seit der ursprünglichen Installation nicht geändert, d.h. Änderungsdatum nicht neuer als Erstelldatum?
Stefan Krüger
InstallSite.org twitter facebook
Posted 06 October 2009 - 15:09
Doch, Zeitstempel neu und Datei binär geändert. Aber es gibt keine Datei-Version.
Ein Patch mit "emus" statt "omus" erzwingt das richtige Verhalten.
Ein Patch mit "emus" statt "omus" erzwingt das richtige Verhalten.
Posted 07 October 2009 - 17:07
Wenn die vorhandene Datei nicht mehr im Originalzustand ist, wird sie nicht überschrieben. Das ist das korrekte und dokumentierte Verhalten. Das Datum der Datei im Setup spielt keine Rolle. Schau dir mal die Diagramme zu den File Versioning Rules an.
Stefan Krüger
InstallSite.org twitter facebook
Posted 08 October 2009 - 14:57
Die alte Datei war und blieb in ihrem Originalzustand.
Die neue Datei hat neuen Zeitstempel und binäre Unterschiede.
Weder alt noch neu hat eine offizielle Dateiversion.
Die neue Datei hat neuen Zeitstempel und binäre Unterschiede.
Weder alt noch neu hat eine offizielle Dateiversion.
Posted 09 October 2009 - 06:42
Ach so. Und der Hash-Wert ist auch in der msi Datei eingetragen (macht InstallShield normalerweise automatisch)? Dann verstehe ich es auch nciht.
Stefan Krüger
InstallSite.org twitter facebook
Posted 09 October 2009 - 08:39
Genau, mit Hashwerten.
Die auch (im Direkt Editor des .msp Unterschiede angezeigt) unterschiedlich sind.
Die auch (im Direkt Editor des .msp Unterschiede angezeigt) unterschiedlich sind.