Ich versuche gerade die Überschreibungs-Regeln von MSI zu verstehen.
In diesem (einfachen) Fall verstehe ich aber gar nichts....
Ich mache folgendes :
1. Ein neues Basic-MSI Projekt (Version 1.0) erstellen
2. Eine neue Komponente mit 2 Text-Dateien (A und B ) erstellen
3. Die Text-Datei A definiere ich als Key-File.
4. Build 1.0 erstellen
5. Build 1.0 installieren
Danach mach ich folgendes.
1. Inhalt der Text-Datei B verändern.
2. ProductVersion auf 1.1 erhöhen.
3. Automatic Upgrade Item erstellen und den Build 1.0 dort angeben.
4. Build 1.1 erstellen
5. Folgende Meldung erscheint: Val0004: The file 'B.txt' in component 'AllOtherFiles' is different from the file in the previous package, but the key file for this component did not change. As a result, the changed file will not get installed...
Folgendes Resultat würde ich nach der Installation des Updates erwarten (sofern ich die Meldung Val0004 richtig interpretiert und die MSI-Regeln verstanden habe):
Es darf sich an den 2 Text-Dateien nichts verändert haben da ich Key-File A gar nicht verändert habe.
Folgendes Resultat trifft ein:
Bei File A steht folgender, richtiger Eintrag im Log-File:
Won't Overwrite;Won't patch;Existing file is unversioned and unmodified - hash matches source file
File B wird aber TROTZDEM überschrieben!!! Es steht folgende Meldung im Log-File:
Overwrite;Won't patch;Existing file is unversioned and unmodified - hash doesn't match source file
Bitte erklärt mir dieses Verhalten ich versteh grad gar nichts mehr! (ich verwende InstallShield 2009)
Vielen Dank für eure Hilfe!
Gruss
Michael
Edited by Michael.Hu, 30 November 2008 - 19:16.