Устанавливать свойство Wix только при соблюдении определенных условий - PullRequest
5 голосов
/ 01 августа 2009

Я бы хотел сделать следующее:

<Property Id="LICENSEKEYPATH">
      REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE
      <DirectorySearch Id="ProgramDataSearch" AssignToProperty="yes" Depth="4" Path="[#ProductDirInAppData]">
        <FileSearch Id="LicenseFileSearch" Name="lic-conf.enp"/>
      </DirectorySearch>
</Property>

Когда мое приложение удаляется, только тогда я хочу найти файл лицензии и получить его путь. В настоящее время, хотя код не выдает никаких ошибок, он все равно ищет путь к файлу лицензии, даже когда я устанавливаю файл. Из-за этого установка задерживается на длительное время. И что еще более важно, настройка wix отображается на первом экране в том смысле, что она ищет это свойство, а затем продолжает работу с другими экранами.

Итак, как мне искать файл или устанавливать значение свойства только во время удаления?

1 Ответ

7 голосов
/ 01 августа 2009

Вы можете управлять настройкой свойства, используя элемент SetProperty. Это просто ярлык для регистрации пользовательского действия. Вы можете контролировать, когда SetProperty выполняется, используя Conditoin в текстовом элементе.

Что касается AppSearch (элементы XxxSearch), вы можете добавить условие, подобное приведенному выше, к элементу AppSearch, чтобы оно выполнялось только во время удаления. Обратите внимание, что подготовка элемента AppSearch повлияет на все элементы XxxSearch. Так что если вам нужно, чтобы во время установки работал поиск, а во время удаления - только другой, это невозможно.

PS: Условие, которое вы хотите, будет выглядеть примерно так:

Installed AND REMOVE="ALL"

...