Dlaczego mój nowy plik Instalatora Windows (MSI) nie jest instalowany poprawnie w starszej wersji MSI?

Objawy

Mam nowo utworzony pakiet instalacyjny (MSI), który instaluje nową wersję mojej aplikacji.

Mam nowy kod produktu dla mojej instalacji, ale zostawiłem ten sam kod UpgradeCode.

Więc kiedy wykonuję nowy MSI, najpierw odinstalowuje starą wersję poprawnie. Nawet pliki programu Katalog Moje produkty jest usuwany.

Ale po odinstalowaniu starej wersji instalator tylko częściowo instaluje nową wersję. Jeśli naprawię uszkodzoną nową instalację (używając Dodaj usuń programy-> Modyfikuj instalację-> Napraw), wszystko jest naprawione.

Jeśli najpierw odinstaluję starą wersję za pomocą polecenia Dodaj usuń programy, a następnie zainstaluję nową wersję, wszystko działa świetnie. Problem występuje tylko wtedy, gdy instaluję nową wersję ponad starą wersją.

Możliwa przyczyna

Numery wersji dla różnych bibliotek DLL i exes w starej wersji były pomieszane. Stara wersja exe to 4.11.1234. Wersja dla nowego exe to 4.5.1234. Zgodnie z „Regułami wersji pliku” nowy plik nie zastąpi starego pliku. Powodem, dla którego drapam się po głowie, jest to, że zanim akcja InstallFiles wykona, plik docelowy nie znajduje się już na dysku.

Inne informacje

Docieram do Instalatora Windows 3.1.

Moja sekwencja wykonania instalacji jest z grubsza:

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

Jeśli ten kontekst nie wyjaśni pytania, daj mi znać ...

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion