如何在 Inno Setup 中正确检查我的机器上安装了哪个 MS SQL 服务器版本?
How to properly check in Inno Setup which MS SQL Server version is installed on my machine?
我使用的是 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
检查注册表视图?最安全、最有效的方法是什么?
我没有发现读取版本两次(对于 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
使用怎么样
SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion
?
我相信它在 XP、Win8 和 Win10
我使用的是 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
检查注册表视图?最安全、最有效的方法是什么?
我没有发现读取版本两次(对于 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
使用怎么样
SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion
?
我相信它在 XP、Win8 和 Win10