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