首页 > 解决方案 > 检查 Windows Server 2003

问题描述

我创建了这些函数来在 windows server 2003 上安装一些文件,我想知道这是否是正确的方法。

function IsServer: Boolean;
var
  ver: TWindowsVersion;
begin
  GetWindowsVersionEx(ver);
  Result := UsingWinNT and (ver.Major = 5) and (ver.Minor >= 2) and Not IsWin64;
end;

function IsServer64: Boolean;
var
  ver: TWindowsVersion;
begin
  GetWindowsVersionEx(ver);
  Result := UsingWinNT and (ver.Major = 5) and (ver.Minor >= 2) and IsWin64;
end;

标签: windowsinno-setuppascalscript

解决方案


您没有向我们展示什么UsingWinNT- 尽管您绝对不需要检查“NT” - Inno Setup 制作的安装程序甚至不会在非 NT 系统上启动。


IsServer64即使在Windows XP Professional x64 Edition 上也会返回 true,因为它也有 5.2 version

要区分这些,请测试ver.ProductType = VER_NT_SERVER.
请参阅如何以编程方式区分 XP 64 位和 Server 2003 64 位


function IsWindowsServer2003_32Bit: Boolean;
var
  Ver: TWindowsVersion;
begin
  GetWindowsVersionEx(Ver);
  Result :=
    (Ver.ProductType = VER_NT_SERVER) and
    (Ver.Major = 5) and (Ver.Minor = 2) and (not IsWin64);
end;

function IsWindowsServer2003_64Bit: Boolean;
var
  Ver: TWindowsVersion;
begin
  GetWindowsVersionEx(Ver);
  Result :=
    (Ver.ProductType = VER_NT_SERVER) and
    (Ver.Major = 5) and (Ver.Minor = 2) and IsWin64;
end;

另请参阅在 Inno Setup 中确定 Windows 版本


推荐阅读