Как выполнить пользовательские действия только при установке (не удалять)

Я уверен, что это довольно легко, но мне было трудно с этим справиться. У меня есть настраиваемое действие, которое выполняет установку (не-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 последовали действия

Ответ 5

Условие для пользовательского действия, возможно, с соответствующим пользовательским действием для удаления. Не знаете, какие инструменты вы используете, но если вторичная установка привязана к компоненту, я бы использовал это состояние компонента. Состояние = 3 означает целевое состояние установленного. Состояние = 2 означает конечное состояние отсутствует. Обратите внимание, что состояние не будет установлено, если изменений нет.