【问题标题】:How to detect SQL Server Express in WiX installer如何在 WiX 安装程序中检测 SQL Server Express
【发布时间】:2009-03-26 08:34:12
【问题描述】:

如何通过 WiX 安装程序检测 Sql Server Express 是否已安装并在机器上运行?

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

【问题讨论】:

    标签: sql-server installation wix


    【解决方案1】:

    好的,我通过反复试验找到了可行的选项:

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

    【讨论】:

    • 完美,刚刚遇到同样的问题。起初我认为它不适用于同时安装 SQL Server Standard 和 Express 的情况,但后来注意到 ">tramontana.co.hu/wix/lesson6.php.
    • 在 64 位 Windows 版本上找不到 InstalledInstance 值。
    【解决方案2】:

    我尝试了 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>
    

    有点小技巧,但对我们的客户来说似乎工作得很好(使用组件内的条件,而不是上面显示的示例启动条件)

    【讨论】:

      【解决方案3】:

      上面接受的答案总是为我通过条件。我让它工作了:

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

      【讨论】:

      • 所有答案似乎都做出了相同的假设——SQL Express 实例安装时实例名称为SQLEXPRESS。虽然 默认值,但它是可以更改的。
      • 是的,所以代替 SQLEXPRESS 您应该检查您需要的实例名称,无论它可能是什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      相关资源
      最近更新 更多