Сбой установки WiX во время ремонта в системах с UAC - PullRequest
2 голосов
/ 12 ноября 2010

У меня проблема с условиями установки в режиме обслуживания, который происходит только в системах с UAC. Я делаю поиск в реестре, чтобы установить несколько свойств, которые используются в условиях установки. Это работает во время первоначальной установки, но когда я пытаюсь восстановить или изменить выбор функции, условие установки не выполняется, и я получаю сообщение об ошибке установки.

Вот как выглядит мой источник wix:

<Product Id="MyProduct" ... >
  <Package InstallPrivileges="elevated" ... />
  <Condition Message="This installtion requires product X or Y. 
                      Setup will now quit.">
    <![CDATA[(MYPROPERTY1 OR MYPROPERTY2)]]>
  </Condition>

  <Property Id="MYPROPERTY1">
    <RegistrySearch Id="MySearch1"
                    Root="HKLM"
                    Key="Software\Company\ProductX"
                    Name="Installed"
                    Type="raw"
                    Win64="no"/>
  </Property>
  <Property Id="MYPROPERTY2">
    <RegistrySearch Id="MySearch2"
                    Root="HKLM"
                    Key="Software\Company\ProductY"
                    Name="Installed"
                    Type="raw"
                    Win64="no"/>
  </Property>

  <!-- ... Features and components and stuff ... -->
</Product>

Я предполагаю, что UAC предотвращает поиск в моем реестре, но я подумал, что установка InstallPrivileges в «повышенное» вызовет запрос UAC во время восстановления. Я никогда не получаю приглашение UAC, хотя, ремонт просто терпит неудачу. Если я отключу UAC, то ремонт работает как положено. Я что-то здесь упускаю?

Edit: я должен указать, что сбой происходит только тогда, когда я выбираю «Change» из ARP, а затем выбираю Repair. Если я выберу «Repair» из ARP напрямую, он будет работать как положено.

1 Ответ

4 голосов
/ 12 ноября 2010

Зарегистрируйте восстановление, чтобы увидеть, какие свойства устанавливает AppSearch. Также подумайте о том, чтобы поставить «или Установлено» в ваши условия, чтобы условия действовали только во время первоначальной установки. Ничего более раздражающего не может установить продукт B, потому что продукт A был удален первым.

Обновление: AppSearch в хорошем журнале и плохом журнале ведет себя одинаково. Проблема в том, что вы не поместили атрибут @Secure в элементы своего свойства, чтобы они не были перечислены в свойстве SecureCustomProperties. Если вы заглянете в журнал, то увидите строку с надписью «игнорирование запрещенного свойства». Для получения дополнительной информации читайте:

Причины, по которым ваша установка может не работать в Windows Vista

...