MSI Zapping : Я не уверен, что именно вы сделали - вы, кажется, выгнули установленный MSI - что вообще не рекомендуется. Это может вызвать серьезные проблемы - вплоть до полного повреждения базы данных MSI в реестре.
Впрочем, обо всем по порядку:
Элемент MajorUpgrade : Вы можете использовать более удобные MajorUpgrade Element
вместо используемых элементов более старого стиля. Вот элементы обновления старого стиля, которые используются . Непосредственно ниже приведен образец более современного, MajorUpgrade convenience element
в действии:
<MajorUpgrade Schedule="afterInstallInitialize"
DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."
AllowDowngrades="no" AllowSameVersionUpgrades="no" />
Возможно, попробуйте этот элемент вместо тех, которые вы используете. Просто закомментируйте старые и замените этим простым элементом. Если вы делаете это правильно, ваше основное обновление должно работать «из коробки». Убедитесь, что вы указали UpgradeCode в Элемент продукта . См. документацию для основных обновлений
Соответствующие ссылки:
Я не полностью понял этот раздел вашего вопроса : " Когда я один раз устанавливаю свой продукт и снова использую MSI, процесс выгрузки выполняется. Однако это не удаляет остаточную информацию из реестра, которую необходимо очистить с помощью «Очистки установщика Windows», а при переустановке возникает проблема с разрешением реестра .
- Застревание : Что именно вы сделали? Зап установки? Зачем? Вы должны быть в состоянии успешно удалить из
Add / Remove programs
? Это удаление не удалось? Что такое сообщение об ошибке при переустановке?
- Изменить / Восстановить : MSI автоматически определит, когда он уже установлен в той же версии. Затем вы увидите диалоговое окно изменения / исправления установки, а не диалоговое окно установки в первый раз.
- Эти диалоговые окна изменения отображаются, только если дважды щелкнуть исходные файлы MSI, использованные для установки, без перекомпоновки. Или вы вызываете изменение из раздела «Установка и удаление программ».
- Если вы перестроите свою настройку, у нее будет как минимум новый GUID пакета, и MSI обнаружит, что только что созданный MSI не тот, который уже установлен, и появится сообщение об ошибке. Теперь вы можете удалить текущую версию из раздела «Установка и удаление программ».
- Сопутствующие товары : MSI также обнаружит, если установлены соответствующие версии, если вы правильно разработали таблицу обновлений - как вы, кажется, делаете.
- Если вы генерируете новый GUID продукта каждый раз при компиляции, вы сможете установить новую версию «поверх» или «рядом» с более старой установкой, если только вы не создаете таблицу обновления - в в этом случае старая версия должна быть автоматически удалена при установке новой версии.
Вы должны понимать код пакета, код продукта и код обновления. Код пакета генерируется автоматически для каждой компиляции и сборки. Код продукта, который вы можете установить для автоматической генерации, установив для него значение * в элементе продукта, или вы можете жестко закодировать его и при необходимости изменить. Код обновления должен оставаться прежним после определения. Пожалуйста, Google разница между этими кодами - у меня нет времени, чтобы закончить это объяснение прямо сейчас.