Как выполнить пользовательские действия только при установке (не удалять)
Я уверен, что это довольно легко, но мне было трудно с этим справиться. У меня есть настраиваемое действие, которое выполняет установку (не-msi) при установке. К сожалению, я заметил, что он также запускает установщик в UNinstallation!
Я просмотрел варианты, но я не могу понять, как это остановить. Если бы кто-нибудь мог мне помочь, я был бы невероятно благодарен.
Кроме того, как настроить настраиваемое действие для удаления только во время UNinstall? Любая помощь очень ценится ребятам!
Ответы
Ответ 1
Добавьте условие к действию, поэтому оно запускается только во время установки, а не при удалении.
Действие выполняется только во время установки
NOT Installed AND NOT PATCH
Действие выполняется во время установки и восстановления
NOT REMOVE
Выполняется только при начальной установке:
NOT Installed
Запуск при начальной установке или при выборе режима.
NOT Installed OR MaintenanceMode="Modify"
Чтобы выполнить только действие во время удаления, используйте следующее условие:
REMOVE~="ALL"
Чтобы выполнить действие только во время обновления:
Installed AND NOT REMOVE
Ответ 2
Немного коррекции:
Наконец, для запуска только во время удаления используйте следующее условие:
REMOVE="ALL"
Это кажется более подходящим, поскольку свойство REMOVE
содержит удаляемые функции.
Поэтому, если я делаю модификацию для удаления одной функции, REMOVE
является true, и действие, которое должно было выполняться только при удалении, выполняется при модификации.
Подробнее здесь, в MSDN
Ответ 3
Пример:
<InstallExecuteSequence>
..
<Custom Action="QtExecIdOfCA" Before="InstallFinalize">NOT Installed</Custom>
..
</InstallExecuteSequence>
..
..
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>
Уведомление! Условие добавлено в тег <Custom>
и не <CustomAction>
, это меня смутило, потому что за Custom последовали действия
Ответ 4
Пожалуйста, будьте осторожны с REMOVE=ALL
. Он не доступен перед установкой.
И проверьте ниже ссылки для получения более подробной информации:
http://msdn.microsoft.com/en-us/library/aa371194(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa368013(v=vs.85).aspx
Ответ 5
Условие для пользовательского действия, возможно, с соответствующим пользовательским действием для удаления. Не знаете, какие инструменты вы используете, но если вторичная установка привязана к компоненту, я бы использовал это состояние компонента. Состояние = 3 означает целевое состояние установленного. Состояние = 2 означает конечное состояние отсутствует. Обратите внимание, что состояние не будет установлено, если изменений нет.