Как правильно проверить в Inno Setup, какая версия MS SQL Server установлена ​​на моем компьютере? - PullRequest
0 голосов
/ 16 апреля 2020

Я использую 64-битный режим установки, и мне нужно проверить, какая версия MS SQL начиная с MS SQL 2005 установлена ​​на моей машине. Я могу сделать это так:

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

, где XXX отличаются для разных версий MS SQL. В режиме 64-разрядной установки HKLM по умолчанию относится к 64-разрядному представлению реестра. Нужно ли проверять оба представления реестра, используя HKLM и HKLM32 для версий ниже 2016 года? Какой самый безопасный и эффективный способ сделать это?

1 Ответ

1 голос
/ 19 апреля 2020

Я не вижу проблем с производительностью при чтении версии дважды (для 32/64 бит). Может быть, вы могли бы поместить версии в массив и выполнить проверку в al oop:

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