Установщик Windows - вынудить пользователей удалить через «Добавить? Удалить Программы» - PullRequest
3 голосов
/ 02 мая 2011

У нас есть установочное решение, написанное на Visual Studio 2005 Installer; это вызывает пользовательское действие C #, и мы столкнулись с известной проблемой, касающейся того факта, что при обновлении запускается старый установочный код, а не новый код, потому что Windows выполняет кэшированную версию DLL настраиваемого действия. Мы знаем это, и, хотя и не за горами, мы пошли дальше.

Когда мы выпускаем новую версию установщика и пользователь запускает ее, мы теперь хотим, чтобы она проверила, установлена ​​ли более ранняя версия - если она есть; мы хотим отобразить сообщение о том, что им нужно удалить старую версию через «Установка и удаление программ». Мы знаем, что если они удаляют вручную, а затем устанавливают, то все в порядке, но не важно, сколько раз мы сообщаем нашим пользователям через документацию; что это то, что они должны сделать - они все равно попытаются запустить новый установщик, не удаляя сначала старую версию.

Поэтому мы хотели бы выложить сообщение и таким образом заставить их к тому, что им говорят !! Я видел, как это делают некоторые установщики (хотя, конечно, не уверен, какой установочный пакет использовался для их создания). У нас только VS 2005 и, конечно, orca !!

Приветствия

Крис.

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

Это можно сделать с помощью специального условия запуска:

Например, если свойство поиска равно OLD_VERSION, условие запуска может выглядеть следующим образом:

Состояние: NOT OLD_VERSION

Описание: An older version was found. Please uninstall it using "Programs and Features" in Control Panel.

Когда для свойства OLD_VERSION установлено значение (найдена более старая версия), это условие запуска отобразит сообщение и остановит процесс установки.

1 голос
/ 05 мая 2011

Это не совсем имеет смысла. Вы не забыли изменить GUID пакета в новой настройке? GUID пакета идентифицирует конкретный файл установки, и если два MSI-файла имеют идентичный GUID, они будут обрабатываться как один и тот же файл независимо от того, есть он или нет. Это может привести к запуску кэшированной версии MSI, и все виды ада вырвутся на свободу.

Я бы порекомендовал прочитать о «крупных обновлениях», которые позволят автоматически удалить существующую версию перед установкой новой версии. Вы также должны убедиться, что вы понимаете основы технологии, прежде чем внедрять ее в дикую природу. Вы НИКОГДА не должны использовать идентичные GUID пакетов для любых файлов MSI. Это практически всегда неправильно и приведет к очень загадочным проблемам.

Я не могу написать здесь все основные решения по обновлению, но в основном это связано с созданием таблицы «Upgrade» вашего MSI для определения версий для удаления. Вам необходимо изменить код пакета, код продукта и номер версии (имеют значение только 3 цифры) и сохранить один и тот же код обновления (два файла MSI с одинаковым кодом обновления «знают», что они связаны - т.е. они принадлежат к одному семейству продуктов) , Проверьте MSDN для образцов основных обновлений.

NB! Если вы развернули файлы MSI с дубликатами GUID пакетов на своем компьютере разработчика, он может иметь случайные установки, которые должны быть очищены с помощью MSIZap или подобного. Будьте осторожны, или еще лучше, проверьте новый установщик на чистой тестовой системе. Системы разработчика полны мусора и, как правило, не подходят для тестирования MSI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...