GetWindowsVersionEx函数在Windows 2012 R2中输出错误

我们使用“GetWindowsVersionEx”函数来提取窗口中的构build版本值。 它在所有的操作系​​统中都能正常工作,但是在最近发布的Windows 2012-R2中却输出了错误的结果。 实际的版本是6.3,但只显示6.2。 所以,当我做了一些研究,我发现下面的链接来解决这个问题。 但是,我不明白我怎么可以在inno设置代码中实现这个。

帮助赞赏。

链接: http : //msdn.microsoft.com/en-us/library/windows/desktop/dn302074%28v=vs.85%29.aspx

[Setup] AppName=My Program AppVersion=1.5 DisableProgramGroupPage=yes DefaultGroupName=My Program OutputDir=c:\output DefaultDirName={sd}\MYPROG UninstallDisplayIcon={app}\MyProg.exe [code] var Version: TWindowsVersion; function InitializeSetup(): Boolean; begin GetWindowsVersionEx(Version); SuppressibleMsgBox('Major='+ IntToStr(Version.Major)+ ' Minor='+IntToStr(Version.Minor),mbCriticalError, MB_OK, MB_OK); end; 

这是在Windows 8.1和server 2012-R2中设计的 。 它将返回应用程序通过应用程序清单支持的最新版本的Windows。

Inno安装版本5.5.3及以下版本仅被标记为与Windows 8兼容。从Inno Setup 5.5.4开始 ,它已更新为支持Windows 8.1:

为Inno Setup使用的各种清单资源添加了Windows 8.1“兼容性”部分。 这使得对操作系统版本的任何检查都能得到真正的版本号(6.3),而不是像在Windows 8(6.2)中那样得到相同的版本号。

tl; dr:升级到最新版本的Inno Setup。