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

Я поставил версию 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, единственной целью которого является удаление программного обеспечения? Или я атакую ​​эту проблему совершенно неправильно?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

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

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

РЕДАКТИРОВАТЬ: я пропустил изменение в требовании InstallScope.Итак, что действительно нужно, так это загрузчик.

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

0 голосов
/ 08 декабря 2010

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

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

...