如何在WiX安装程序中检测SQL Server Express

Krz*_*mic 9 sql-server installer wix

如何检测是否在WiX安装程序中的计算机上安装并运行了Sql Server Express?

我想在安装我的应用程序之前进行检查,如果它没有安装并运行,请在安装我的应用程序之前通知用户必须先安装它.

Krz*_*mic 11

好的,我发现通过试错法选项有效:

<Property Id="SQLSERVER">
  <RegistrySearch Id="SQLServer" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft Sql Server" Type="raw" Name="InstalledInstances"/>
</Property>
Run Code Online (Sandbox Code Playgroud)

我定义了一个注册表搜索,然后检查它的值:

<Condition Message="You don't have SQL Server installed.">
  <![CDATA[SQLSERVER >< SQLEXPRESS]]>
</Condition>
Run Code Online (Sandbox Code Playgroud)


Bit*_*der 6

我试图克日什托夫的解决方案(上) -但在某些机器上使用这种方法将无法正确检测时,他们却在没有安装的SQL Express.

它看起来是由错误处理REG_MULTI_SZ InstalledInstances注册表值引起的?

当我检查是否需要在安装程序中停止/重新启动Sql Server Express服务时,我决定只是检查 - 所以这是我的替代方案,我只是检查服务:

<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>
Run Code Online (Sandbox Code Playgroud)

有点破解,但似乎对我们的客户来说运行得很好(使用组件内的条件,而不是上面显示的示例启动条件)