Warum wird meine neue Windows Installer-Datei (MSI) nicht ordnungsgemäß über eine ältere Version von MSI installiert?

Symptome

Ich habe ein neues Installationspaket (MSI) erstellt, mit dem eine neue Version meiner Anwendung installiert wird.

Ich habe einen neuen ProductCode für meine Installation, aber den UpgradeCode habe ich gleich gelassen.

Wenn ich also das neue MSI ausführe, deinstalliert es zuerst die alte Version korrekt. Sogar das Verzeichnis Programme \ MyProduct wird entfernt.

Nach der Deinstallation der alten Version installiert das Installationsprogramm die neue Version jedoch nur teilweise. Wenn ich die beschädigte Neuinstallation repariere (Mit Software-> Installation ändern-> Reparieren), ist alles behoben.

Wenn ich zuerst die alte Version mit "Software" deinstalliere und dann die neue Version installiere, funktioniert alles einwandfrei. Das Problem tritt nur auf, wenn ich die neue Version über der alten Version installiere.

Mögliche Ursache

Die Versionsnummern für verschiedene DLLs und Exes in der alten Version wurden durcheinander gebracht. Die alte exe Version ist 4.11.1234. Die Version für die neue Exe ist 4.5.1234. Gemäß den "Dateiversionsregeln" überschreibt die neue Datei die alte Datei nicht. Der Grund, warum ich mir den Kopf zerkratzt habe, ist, dass sich zum Zeitpunkt der Ausführung der Aktion InstallFiles die Zieldatei nicht mehr auf dem Datenträger befindet.

Andere Informationen

Ich beziehe mich auf Windows Installer 3.1.

Meine Installationsausführungssequenz ist ungefähr:

<code>...
InstallValidate
RemoveExistingProducts
InstallInitialize
...
InstallFiles
...
InstallExecute
InstallFinalize
....
</code>

Wenn dieser Kontext die Frage nicht klar macht, lassen Sie es mich wissen ...

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage