Probé solución de Krzysztof (arriba) - pero en algunas máquinas cuando se usaba este enfoque no se detectaba correctamente cuando lo hicieron no tienen instalado Sql Express.
Parece que se debe a un mal manejo del valor de registro REG_MULTI_SZ InstalledInstances?
Como estaba revisando para ver si necesitaba detener/reiniciar el servicio Sql Server Express en el instalador, decidí comprobarlo, así que aquí está mi alternativa, donde simplemente verifico el servicio:
<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>
poco de un truco, pero parece que funciona lo suficientemente bien como para nuestros clientes (estaban usando las condiciones dentro de los componentes, en lugar de las condiciones ejemplo de lanzamiento que se muestran arriba)
Perfecto, acaba de llegar al mismo problema. Al principio pensé que no funcionaría para el caso de tener ambos SQL Server Standard & Express instalados, pero luego noté el "><" que después de un poco de excavación descubrí que significa que la izquierda contiene el derecho, curiosamente no pude encuentre una mención de ese operador de expresión condicional mencionado en los documentos de Wix, pero lo encontró aquí: http://www.tramontana.co.hu/wix/lesson6.php. – Bittercoder
No encontrará el valor InstalledInstance en la versión de 64 bits de Windows. – jmayor
necesita cambiar al Wow6432Node en lugar de HKLM \ SOFT .. \ MSFT .. – jmayor