Установщик msi не предлагает пользователю выполнить обновление

У меня есть простой установщик msi setup.exe (созданный с помощью VS2010). При первой установке все в порядке, проблема заключается во второй установке: 1. Параметры msi: a.RemovePreviousVersions имеет значение ИСТИНА. 2. Я обновил номер версии установки (для второй установки), а затем нажал «ОК», когда спросил, хочу ли я обновить код продукта.

На этом этапе я перекомпилировал msi и дважды щелкнул setup.exe. Проблема: я ожидаю, что установщик обнаружит, что уже установлена ​​предыдущая версия, и спросит меня, хочу ли я удалить \ обновить ее. происходит то, что установщик автоматически обновляет установленный продукт до новой версии, ничего не спрашивая ...

Есть ли способ настроить проект msi, чтобы он подсказывал экран "Upgrade \ Remove" ????

Большое спасибо..


person Liran    schedule 08.05.2011    source источник


Ответы (2)


Я не использовал VS Installer, но он сильно ограничен. Технически ваш пакет обновления должен иметь

  1. Новый код продукта
  2. Тот же код обновления, что и у вашего предыдущего продукта

Вам также необходимо добавить FindRelatedProducts и RemoveExistingProducts в таблицу InstallE в правильном порядке. Вы можете добавить немного графического интерфейса MSI поверх него, но это будет означать, что вам придется отредактировать msi вручную с помощью редактора Orca Editor. Более простой подход может заключаться в использовании набора инструментов Wix, где у вас больше свободы. На ваш вопрос уже был дан ответ там.

person Alois Kraus    schedule 08.05.2011

Я нашел эту статью очень полезной. Особенно:

• Если новый файл MSI имеет тот же ProductCode и PackageCode, что и уже установленный продукт, Windows указывает, что вы должны восстановить или удалить продукт.

введите описание изображения здесь

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

Ремонт не использует ваш новый файл MSI для восстановления продукта и не обновляет то, что вы ранее установили. Вместо этого он восстанавливает существующий установленный продукт. То есть он ведет себя так, как если бы вы перешли к исходному файлу MSI, используемому для установки существующего продукта, выбрали контекстное меню и выбрали ремонт. (Примечание: восстановление также можно запустить из программы «Установка и удаление».)

• Если новый файл MSI имеет тот же ProductCode, что и установленный продукт, но другой PackageCode, вы получите сообщение о том, что другая версия продукта уже установлена.

person Jacob Seleznev    schedule 08.05.2011