Как выполнить пользовательское действие только при установке (не удалять)
Я уверен, что это довольно просто, но мне было тяжело с этим. У меня есть пользовательское действие, которое выполняет другой (не 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
Значение true, и действие, которое должно было выполняться только при удалении, выполняется при изменении.
Подробнее здесь на 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>
тег, а не <CustomAction>
это смутило меня, потому что за Custom следует действие attribue
Пожалуйста, будьте осторожны с 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
Условие для настраиваемого действия, возможно, с соответствующим настраиваемым действием для удаления. Не уверен, какие инструменты вы используете, но при условии, что вторичная установка связана с компонентом, я бы использовал это состояние компонента. Состояние =3 означает целевое состояние установленного. Состояние = 2 означает целевое состояние отсутствия. Обратите внимание, что состояние не будет установлено, если нет изменений.