动态网页技术厦门百度seo
前言
使用Inno Setup打包Windows桌面程序,有时候可能需要根据系统版本不同来处理对应的流程, 比如安装不同的驱动,或者执行不同的脚本等等,本文主要阐述如何在打包脚本中添加函数去判断不同的系统版本。
正文
直接上代码:
//Func: Get Windows Version
function MyGetWindowsVersion:String;
varosInfo: RTL_OSVERSIONINFOW;
beginosInfo.dwOSVersionInfoSize := SizeOf(osInfo);RtlGetVersion(osInfo);//test//MsgBox(Format('Get windows Version : Major %d,Minor %d,Build %d', [osInfo.dwMajorVersion, osInfo.dwMinorVersion, osInfo.dwBuildNumber]), mbInformation, MB_OK);//windows11 Windows 11的主版本号是10,次版本号是0,内部版本号大于等于22000if(osInfo.dwMajorVersion = 10) and (osInfo.dwMinorVersion = 0) and (osInfo.dwBuildNumber >= 22000) thenbeginResult:='WIN11';Exit;end;//windows10if(osInfo.dwMajorVersion = 10) and (osInfo.dwMinorVersion = 0) thenbeginResult:='WIN10';Exit;end;//windows8.1if(osInfo.dwMajorVersion = 6) and (osInfo.dwMinorVersion = 3) thenbeginResult:='WIN81';Exit;end;//windows8if(osInfo.dwMajorVersion = 6) and (osInfo.dwMinorVersion = 2) thenbeginResult:='WIN8';Exit;end;//Windows 7if(osInfo.dwMajorVersion = 6) and (osInfo.dwMinorVersion = 1) thenbeginResult:='WIN7';Exit;end;//Windows XPif(osInfo.dwMajorVersion = 5) and (osInfo.dwMinorVersion = 10) thenbeginResult:='WINXP';Exit;end;//其它Result:='OTHER';
end;function MySystemIs(WinVers: String): Boolean;
begin
Result := (MyGetWindowsVersion = Uppercase(WinVers));
end;
调用也很简单,比如需要在执行安装过程中判断系统来安装某个附加程序:
[Run]
Filename: "{app}\{#VCName}"; Parameters: "/S"; StatusMsg: "Installing VC++ redistributables..."; Check: MySystemIs('WIN11');
通过调用 MySystemIs
传入系统版本名称,即可判断当前是否为想要的系统了。