J'ai essayé la solution de Krzysztof (ci-dessus) - mais sur certaines machines lors de l'utilisation de cette approche, il ne détectait pas correctement quand ils avaient pas ont installé Sql Express.
Cela semblait provenir d'une mauvaise gestion de la valeur de Registre REG_MULTI_SZ InstalledInstances? Comme je vérifiais pour voir si je devais arrêter/redémarrer le service Sql Server Express dans le programme d'installation, j'ai décidé de vérifier plutôt à la place - alors voici mon alternative, où je vérifie simplement le service à la place:
<Property Id="SQLEXPRESSINSTALLED" >
<RegistrySearch Id="IsSqlExpressServiceInstalled" Root="HKLM" Key="SYSTEM\CurrentControlSet\services\MSSQL$SQLEXPRESS" Name="Description" Type="raw" Win64="no"/>
</Property>
<Condition Message="Express Not Installed">SQLEXPRESSINSTALLED</Condition>
<Condition Message="Express Installed">NOT SQLEXPRESSINSTALLED</Condition>
peu un hack, mais semble fonctionner assez bien pour nos clients (utilisaient les conditions dans les composants, plutôt que les conditions de lancement d'exemple ci-dessus)
Parfait, juste frappé le même problème. Au début, je pensais que cela ne fonctionnerait pas dans le cas où SQL Server Standard et Express étaient installés, mais j'ai remarqué le "><" qui, après un peu de creusement j'ai découvert que le gauche contient bien, bizarrement je ne pouvais pas trouver la mention de cet opérateur d'expression conditionnelle mentionné dans les documents Wix, mais l'avez trouvé ici: http://www.tramontana.co.hu/wix/lesson6.php. – Bittercoder
Vous ne trouverez pas la valeur InstalledInstance sur la version Windows 64 bits. – jmayor
vous devez passer au Wow6432Node au lieu de HKLM \ SOFT .. \ MSFT .. – jmayor