在我工作的公司,我们使用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的服务器版本上?
从现在开始,谢谢大家。
答案 0 :(得分:1)
您可以GetWindowsVersionEx
function从InitializeSetup
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_SERVER
或Version.ProductType <> VER_NT_SERVER and Version.ProductType <> VER_NT_DOMAIN_CONTROLLER
。
有关详细信息,请参阅What is the simplest way to differentiate between Windows versions? wProductType
字段的文档。
另见{{3}}