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


Я уверен, что это довольно легко, но у меня было трудное время с этим. У меня есть пользовательское действие, которое выполняет другой (не msi) установщик при установке. К сожалению, я заметил, что он также выполняет установщик при удалении!

Я просмотрел варианты, но я не могу' кажется, чтобы узнать, как остановить это. Если бы кто-нибудь мог мне помочь, я был бы невероятно благодарен.

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

5 71

5 ответов:

добавьте условие на действие, чтобы оно срабатывало только во время установки, а не удаления.

действие выполняется только во время установки

NOT Installed AND NOT PATCH

действие выполняется во время установки и ремонт

NOT REMOVE

запуск только при начальной установке:

NOT Installed

запуск при начальной установке или при выборе восстановления.

NOT Installed OR MaintenanceMode="Modify"

чтобы выполнить действие только во время удаления, используйте следующее условие:

REMOVE~="ALL"

только для запуска действие во время обновления:

Installed AND NOT REMOVE

немного коррекции:

наконец, чтобы выполнить действие только во время удаления, используйте следующее условие: REMOVE="ALL"

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

пример:

<InstallExecuteSequence>
..
    <Custom Action="QtExecIdOfCA" Before="InstallFinalize">NOT Installed</Custom>
..
</InstallExecuteSequence>

..
..
<CustomAction Id="QtExecIdOfCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>

обратите внимание! условие добавляется к <Custom> и тег не the <CustomAction> это смутило меня, потому что обычай сопровождается атрибутом действия

пожалуйста, будьте осторожны с REMOVE=ALL. Он не доступен до последовательности installvalidate.
И проверьте ссылку ниже для более подробной информации:
http://msdn.microsoft.com/en-us/library/aa371194(В=и 85).аспн
http://msdn.microsoft.com/en-us/library/aa368013(В=и 85).аспн

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