【问题标题】:How to properly check in Inno Setup which MS SQL Server version is installed on my machine?如何在 Inno Setup 中正确检查我的机器上安装了哪个 MS SQL Server 版本?
【发布时间】:2020-04-16 05:42:37
【问题描述】:

我使用的是 64 位安装模式,我必须检查从 MS SQL 2005 开始的哪个版本的 MS SQL 安装在我的机器上。 我可以这样做:

if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\XXX\Tools\ClientSetup\CurrentVersion', 'CurrentVersion', RegValue) then
  SQLVERSIONINSTALLED := RegValue;

其中 XXX 对于不同版本的 MS SQL 是不同的。 在 64 位安装模式下,HKLM 默认与注册表的 64 位视图相关。对于低于 2016 的版本,我是否必须使用 HKLM 和 HKLM32 检查两个注册表视图?最安全、最有效的方法是什么?

【问题讨论】:

    标签: sql registry inno-setup


    【解决方案1】:

    两次读取版本(对于 32/64 位)没有任何性能问题。 也许您可以将版本放在一个数组中并在循环中执行检查:

    var
    sqlKeys: array of string;
    
      sqlKeys := ['15.0', '16.0', '17.0'];
    
      for I := low(sqlKeys) to high(sqlKeys) do
      begin
        if RegQueryStringValue(HKLM32, 'SOFTWARE\Microsoft\Microsoft SQL Server\' + sqlKeys[I] + '\Tools\ClientSetup\CurrentVersion', 'CurrentVersion', RegValue) then
          SQLVERSIONINSTALLED := RegValue;
    
        if RegQueryStringValue(HKLM64, 'SOFTWARE\Microsoft\Microsoft SQL Server\' + sqlKeys[I] + '\Tools\ClientSetup\CurrentVersion', 'CurrentVersion', RegValue) then
          SQLVERSIONINSTALLED := RegValue;
      end
    

    【讨论】:

      【解决方案2】:

      如何使用 SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion ? 我相信它是在 XP、Win8 和 Win10 上

      【讨论】:

        猜你喜欢
        • 2022-01-24
        • 2010-10-28
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 2022-10-22
        • 1970-01-01
        • 1970-01-01
        • 2018-02-15
        相关资源
        最近更新 更多