我们使用“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。