Установщик Windows 3.1 переустанавливает старую версию сразу после ее удаления, а не устанавливает новое обновление

#windows-xp #windows-installer

#windows-xp #windows-установщик

Вопрос:

У меня есть сборка MSI, которая является обновлением. Код обновления остается неизменным между предыдущим выпуском и новой сборкой обновления. У меня также установлен атрибут RemovePrevious, поэтому старая версия удаляется перед установкой обновления.

Я вижу, что удаление старой версии происходит, как и ожидалось. Однако установщик Windows 3.1 немедленно оборачивается попытками переустановить старую версию снова, прежде чем он даже перейдет к новой версии. Я проверил это, изменив первое диалоговое окно пользовательской установки в более новой версии, и вижу это просто отлично при первой установке новой версии. Но диалоговое окно, отображаемое при обновлении, является старым, которое поставлялось с предыдущей версией. Я даже перестроил старую версию с отображением окна сообщения, чтобы убедиться, что установщик действительно переустанавливает старую версию сразу после удаления, а не переходит к новой версии обновления.

Использование MSIExec не показывает никаких зарегистрированных ошибок, объясняющих это странное поведение, и я не могу найти никакой документации, которая помогла бы определить, почему это происходит.

У кого-нибудь есть идеи о том, почему происходит такое поведение и как это исправить?

Комментарии:

1. Я должен также упомянуть, что пользовательские действия для установки и удаления содержатся в общем steps.exe . Оно создано проектом как часть моего решения VS 2005. В пользовательских действиях нет функций ввода. Таким образом, предполагая, что правильные вызовы выполняются следующими формальными объявлениями для переопределения тех, которые установлены установщиком: защищенное переопределение недействительно OnBeforeInstall(); общедоступное переопределение недействительно Install(); общедоступное переопределение недействительно Uninstall(); Поскольку Uninstall() завершается без ошибок, неясно, почему установщик вызывает два других пользовательских действия функции установки, а не обращается к новой сборке обновления?

Ответ №1:

Попробуйте увеличить номер версии вашего приложения / dll во встроенных ресурсах. «Новое» поведение установщика не приведет к обновлению каких-либо EXE / DLL-файлов, если только версии файлов не были изменены.

Комментарии:

1. Извините, это не было указано, я думаю, я думал, что будет очевидно, что для того, чтобы процесс обновления даже начался, номер версии и код продукта должны быть увеличены вместе с тем, чтобы оба имели идентичный код обновления. Даже увеличение версии без изменения кода продукта не запустит процесс обновления, а скорее вызовет ошибку о том, что существующее приложение уже установлено и должно быть удалено с помощью программы установки и удаления.