2015-09-29 2 views
0

Я не хочу, чтобы SQL-скрипты выполнялись при автоматическом удалении, потому что основное обновление удаляет существующие продукты.Wix Component Условие UPGRADINGPRODUCTCODE не работает

Проблема заключается в том, что у меня есть имя пользователя и пароль базы данных, переданный как параметр командной строки, поэтому, когда он выполняет обновление и автоматически запускает удаление, он пытается выполнить SQL-скрипты, но нет имени пользователя или пароля базы данных , поэтому обновление не выполняется. Вы можете видеть в SQL Profiler, что имя пользователя установлено на '' (пустое).

Мой код компонента заключается в следующем:

<Component Id="SQL" Guid="AF267662-23A0-4b46-B490-C11465BE9858" KeyPath="yes" > 
<Condition>NOT UPGRADINGPRODUCTCODE AND NOT REMOVE="ALL"</Condition>    
<!--UNINSTALL--> 
<sql:SqlScript Id="Uninstall.SQLScript" ExecuteOnInstall="no" ExecuteOnUninstall="yes" BinaryKey="SQLScript.Uninstall" User="SQLUser" SqlDb="SqlDatabase" Sequence="1"/> 

<!--INSTALL--> 
<sql:SqlScript Id="SQLScript2" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="SQLScript.Create.DBObjects" User="SQLUser" SqlDb="SqlDatabase" Sequence="3"/> 
</Component> 

ответ

1

условие должно быть на пользовательские действия, а не на компоненте. Это хороший пример:

Wix: Run custom action based on condition

То же самое здесь: How can I perform a custom action in WiX that only executes on install or uninstall?

Когда вы поставили условие на компоненте вы делаете это транзитивно, то есть состояние установки компонента будет меняться в течение устанавливать и ремонтировать на основе значения свойства. Это не совсем то, что вам нужно, поэтому вы должны определить CA, а не компонент.

Смежные вопросы