如何使Inno安装程序安装程序仅安装在Windows的服务器版本上

时间:2015-12-11 12:30:50

标签: inno-setup

在我工作的公司,我们使用Inno Setup来安装我们的软件产品。问题是我们的软件只与Windows Server版本兼容。与Windows Server 2008和Windows Server 2012一样。

我尝试做的是显示一条消息并阻止用户安装在非服务器版本中。例如,像Windows 8和7。

我搜索过,可以使用Windows内部版本号检查Windows版本。但是Windows的服务器版本的构建数量与某些桌面相同。可以在这里查看:http://www.jrsoftware.org/ishelp/index.php?topic=winvernotes

有没有办法让安装程序只使用Inno Setup安装在Windows的服务器版本上?

从现在开始,谢谢大家。

1 个答案:

答案 0 :(得分:1)

您可以GetWindowsVersionEx functionInitializeSetup event测试OSVERSIONINFOEX structure返回的TWindowsVersion.ProductType

[Code]

function InitializeSetup(): Boolean;
var
  Version: TWindowsVersion;
begin
  Result := True;

  GetWindowsVersionEx(Version);
  Log(Format('Product Type is %d', [Version.ProductType]));

  if Version.ProductType = VER_NT_WORKSTATION then
  begin
    MsgBox('This product can be installed on Windows Server only.', mbError, MB_OK);
    { Abort installer }
    Result := False;
  end;
end;

我一直在防守并测试Version.ProductType = VER_NT_WORKSTATION。也许您想测试Version.ProductType <> VER_NT_SERVERVersion.ProductType <> VER_NT_SERVER and Version.ProductType <> VER_NT_DOMAIN_CONTROLLER

有关详细信息,请参阅What is the simplest way to differentiate between Windows versions? wProductType字段的文档。

另见{{3}}