Je rencontre un problème avec les conditions d'installation en mode maintenance qui ne se produisent que dans les systèmes avec UAC. Je fais une recherche de registre pour définir quelques propriétés qui sont utilisées dans la condition d'installation. Cela fonctionne au cours de l'installation initiale, mais lorsque j'essaie de réparer ou de modifier la sélection de fonctionnalité, la condition d'installation échoue et j'obtiens le message pour la condition d'installation ayant échoué.La condition d'installation de WiX échoue pendant la réparation dans les systèmes avec UAC
C'est ce que ma source de Wix ressemble:
<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>
Je suppose que l'UAC empêche mes recherches de registre de se produire, mais je pensais que la mise InstallPrivileges à « élevé » entraînerait une invite UAC lors de la réparation . Cependant, je ne reçois jamais une invite UAC, la réparation échoue juste. Si je désactive le contrôle de compte d'utilisateur, la réparation fonctionne comme prévu. Est-ce que je manque quelque chose d'autre ici? Editer: Je dois souligner que l'échec ne se produit que lorsque je choisis "Modifier" à partir d'ARP, puis choisissez Réparer. Si je choisis "Repair" directement dans ARP, cela fonctionne comme prévu.
Christopher, merci pour vos suggestions. J'ai été capable de me débarrasser du bogue en ajoutant "OU installé" à la condition d'installation, bien que je me demande toujours ce qui cause le comportement différent quand UAC est actif. J'ai comparé les journaux de non-UAC et UAC, et toutes les propriétés sont définies dans les deux instances, cependant, lorsque UAC est actif LaunchConditions renvoie 3 sans explication pour la différence. Les logs montrent que la propriété utilisée a la valeur correcte, donc l'échec est un mystère complet. –
Si vous voulez envoyer les journaux à moi, je pourrais regarder plus. –
Traqué votre adresse @ deploymentengineering.com. J'apprécierais grandement que vous me fassiez savoir si vous trouvez quelque chose. –