3

我们正在使用“GetWindowsVersionEx”函数来提取 Windows 中的构建版本值。它在所有操作系统中都能完美运行,但在最近发布的 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;
4

1 回答 1

6

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

Inno Setup 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。

于 2013-11-13T10:47:24.400 回答