Как выполнить пользовательское действие только в install (не удалить)
Я уверен, что это довольно легко, но у меня было трудное время с этим. У меня есть пользовательское действие, которое выполняет другой (не msi) установщик при установке. К сожалению, я заметил, что он также выполняет установщик при удалении!
Я просмотрел варианты, но я не могу' кажется, чтобы узнать, как остановить это. Если бы кто-нибудь мог мне помочь, я был бы невероятно благодарен.
кроме того, как настроить пользовательское действие для отключения только во время удаления? Любой помощь очень ценится ребята!
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 означает целевое состояние отсутствует. Обратите внимание, что состояние не будет установлено, если нет никаких изменений.