Симптомы
Я недавно создал установочный пакет (MSI), который устанавливает новую версию моего приложения.
У меня есть новый ProductCode для моей установки, но я оставил UpgradeCode таким же.
Поэтому, когда я запускаю новый MSI, он сначала правильно удаляет старую версию. Даже каталог Program Files \ MyProduct удаляется.
Но после удаления старой версии программа установки лишь частично устанавливает новую версию. Если я восстановлю поврежденную новую установку (используя «Установка и удаление программ»> «Изменить установку»> «Восстановить»), все исправлено.
Если я сначала удаляю старую версию, используя «Установка и удаление программ», а затем устанавливаю новую версию, все работает отлично. Проблема возникает только тогда, когда я устанавливаю новую версию поверх старой версии.
Возможная причина
Номера версий для различных dll и exe в старой версии были перепутаны. Старая версия exe - 4.11.1234. Версия для нового exe 4.5.1234. Согласно «Правилам управления версиями файлов» новый файл не будет перезаписывать старый файл. Причина, по которой я чешу голову, состоит в том, что к тому времени, когда действие InstallFiles выполняет целевой файл, он больше не находится на диске.
Другая информация
Я нацеливаюсь на установщик Windows 3.1.
Моя последовательность выполнения установки примерно равна:
...
InstallValidate
RemoveExistingProducts
InstallInitialize
...
InstallFiles
...
InstallExecute
InstallFinalize
....
Если этот контекст не проясняет вопрос, дайте мне знать ...
Спасибо!