Frage

Ich habe eine Anwendung mit Version Nr. 1.0.0.1, ein Upgrade auf die ältere Version 1.0.0.0.

Wenn ich versuche, die neue Version zu installieren 1.0.0.1, wenn mein System bereits die ältere Version installiert hat, bin ich den Fehler 2869 erhalten.

Wenn ich jedoch die ältere Version manuell deinstalliere und die neuere Version installieren kann, wird es erfolgreich installiert.

Ich habe den Produktcode für die neue Version geändert.Hat den Upgrade-Code jedoch nicht geändert.

Kann mir jemand den Grund wissen lassen und dafür beheben?

War es hilfreich?

Lösung

In the MSI ProductVersion property only the first 3 fields are significant when comparing versions using the major upgrade logic. So in your case MSI will consider 1.0.0.1 and 1.0.0.0 to both be 1.0.0. FindRelatedProducts will therefore not detect this situation as an upgrade.

The way I approach this is to create a 'packed' version where the 3rd and 4th fields are combined into one using, say (4096*f3 + f4), but this will behove you never to have a 4th field (build number) greater than 4096, and a 3rd field no bigger than 15, since 0xFFFF is the maximum for a version field.

This allows us to perform major upgrades between individual nightly builds, not just service packs, without requiring a bootstrapper to achieve a minor upgrade, and we can have a new productcode for every build so there's no need to have to remember to update it manually when the need arises.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top