У меня проблема с условиями установки в режиме обслуживания, который происходит только в системах с 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 напрямую, он будет работать как положено.