How to detect SQL Server Express in WiX installer

前端 未结 3 1903
野性不改
野性不改 2020-12-15 00:04

How do I detect if Sql Server Express is installed and running on a machine in a WiX installer?

I want to check before installing my application and if it\'s not ins

相关标签:
3条回答
  • 2020-12-15 00:15

    Ok, I found by trial and error option that works:

    <Property Id="SQLSERVER">
      <RegistrySearch Id="SQLServer" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft Sql Server" Type="raw" Name="InstalledInstances"/>
    </Property>
    

    I define a registry search, and then check its value:

    <Condition Message="You don't have SQL Server installed.">
      <![CDATA[SQLSERVER >< SQLEXPRESS]]>
    </Condition>
    
    0 讨论(0)
  • 2020-12-15 00:21

    I tried Krzysztof's solution (above) - but on some machines when using this approach it wasn't correctly detecting when they did not have Sql Express installed.

    It looked to be caused by mishandling of the REG_MULTI_SZ InstalledInstances registry value?

    As I was checking to see if I needed to stop/restart the Sql Server Express service in the installer, I decided to just check against that instead - so here's my alternative, where I just check for the service instead:

    <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>
    

    Bit of a hack, but seems to work well enough for our customers (were using the conditions within components, rather then the example Launch conditions shown above)

    0 讨论(0)
  • 2020-12-15 00:24

    The accepted answer above was always passing the condition for me. I got it working using:

    <Property Id="SQLSERVER_INSTANCE">
      <RegistrySearch Id="SQLServerRegSearch" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft Sql Server\Instance Names\SQL" Type="raw" Name="SQLEXPRESS"/>
    </Property>
    <Condition Message="You don't have SQL Server installed.">
      <![CDATA[SQLSERVER_INSTANCE]]>
    </Condition>
    
    0 讨论(0)
提交回复
热议问题