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

问题描述 投票:9回答:3

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

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

sql-server installer wix
3个回答
6
投票

我尝试过Krzysztof的解决方案(上图) - 但是在使用这种方法的某些机器上,它没有正确检测何时没有安装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>

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


11
投票

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

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

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

<Condition Message="You don't have SQL Server installed.">
  <![CDATA[SQLSERVER >< SQLEXPRESS]]>
</Condition>

1
投票

上面接受的答案总是为我传递条件。我使用它了:

<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>
© www.soinside.com 2019 - 2024. All rights reserved.