Могу ли я использовать WiX для создания MSI, единственной целью которого является удаление программного обеспечения?

StackOverflow https://stackoverflow.com/questions/4379544

Вопрос

Я поставил версию 1.0 своего программного обеспечения с помощью сгенерированного на WiX установщика, и теперь я хочу поставить / распространить версию 1.1.Если возможно, я хотел бы избежать ситуации, когда людям нужно сначала вручную удалить 1.0, прежде чем устанавливать 1.1.

Тем не менее, мне пришлось изменить InstallScope, меняя его с perUser Для perMachine по разным техническим причинам.Ничего особенного, за исключением того, что это усложняет процесс обновления.

То, что я вижу, происходит, это то же самое, что этот пост упоминания, в которых, несмотря на то, что вы выполнили все необходимые правильная работа чтобы реализовать обновление, по завершении вы увидите две разные записи в списке установленных программ, одна из которых 1.0, а другая 1.1.И это вызывает проблемы в программном обеспечении.

Таким образом, может показаться, что базовая логика "удалить предыдущую версию" здесь не работает, поэтому мне нужен какой-то другой метод удаления предыдущей версии.Я попытался пойти по пути отстрела надлежащего msiexec /x команда удалить предыдущую версию с помощью ShellExecute CustomAction, но если я чего-то не упускаю, то в последовательности нет места, где это сработало бы, потому что вы запускаете один из них msiexec команда в середине очередного запуска.

Потом я наткнулся на эта страница в котором подробно описывается малодокументированный метод "объединения" MSI воедино:

setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe

Звучит заманчиво - все, что мне сейчас нужно, это какой-нибудь MSI, единственной функцией которого является удаление версии 1.0, а затем я могу соединить ее со старой.

За исключением того, что я не нахожу много документации о том, как вы могли бы это сделать.Фактически, поскольку теоретически это может быть использовано для удаления программного обеспечения, которое вы изначально не устанавливали, я не уверен, что это вообще технически возможно по соображениям безопасности.

Кто-нибудь знает, как создать MSI с помощью WiX, единственной целью которого является удаление программного обеспечения?Или я совершенно неправильно подхожу к этой проблеме?

Это было полезно?

Решение

Используйте этот Wix для удаления предыдущей версии как части вашей версии 1.1.Я не уверен, зачем вам нужно объединять MSIS в цепочку.

Как реализовать обновление установщика WiX?

Редактировать:Я пропустил изменение в требовании к InstallScope.Итак, что действительно необходимо, так это загрузчик.

Я опубликовал, как создать загрузчик здесь: Мне нужен проект начальной загрузки WIX, который устанавливает МОЕ программное обеспечение и необходимые компоненты

Другие советы

Решением является использование пользовательского действия, которое запускает команду "msiexec.exe / x".Убедитесь, что это запланировано после Установка завершается в InstallExecuteSequence.Кроме того, это Возврат должно быть Асинхронный запуск (асинхронное выполнение, не ждите возврата).

С этими настройками удаление использует другой асинхронный процесс, что позволяет избежать конфликта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top