我的脚本中有几个处理版本号的地方:
#定义AppVerText() \ GetVersionComponents(SourceDir + '\Meeting Schedule Assistant.exe,\ Local,Local1,Local2,Local3),\ Str(Local) + ".“.”+ Str(Local1) + ".“+ Str(Local2)”
{安装的版本是否至少为14.14?}结果:= (主要< 14)或(主要< 14)和(次要< 14)或(次要= 14)和(Bld< 26429)或(Bld=26429和(Rbld <3);if (结果)
从注册表项中提取各种值。
{请检查WindowsVersion }WindowsVersion := GetWindowsVersion;Log(格式( Windows版本:%x,WindowsVersion));(* Windows必须是Win 7 SP1 (6.1.7601)、Win 8.1 (6.3.9200)或更高版本,例如: Win 10 (10.0.10240)参见:http://www.jrsoftware.org/ishelp/index.php?topic=winvernotes Microsoft .Net Framework4.6.2只适用于这些操作系统。*如果(WindowsVersion < MakeVersion(6,1,7601))或(WindowsVersion >= MakeVersion(6,2,0)和(WindowsVersion< MakeVersion(6,3,0),则开始MakeVersion mbError,MB_OK);
这就要求:
函数MakeVersion(主要,次要,构建:基数):基数;开始结果:= (主shl 24) +(小shl 16) +构建;结束;
我只是想知道我们是否能够利用Inno Setup 6.1中引入的新的“版本”Pascal函数等等?
发布于 2020-11-17 09:24:29
您可以使用ComparePackedVersion function (与PackVersionComponents一起):
Result :=
(ComparePackedVersion(
PackVersionComponents(Major, Minor, Bld, Rbld),
PackVersionComponents(14, 14, 26429, 3)) < 0);在代码长度方面没有太大的改进。但它不那么容易出错,也更容易理解。
我相信直接比较打包版本数字是安全的(至少除非您的主要版本不高于2^15)。尽管PackVersionComponents不这么认为。
Result :=
(PackVersionComponents(Major, Minor, Bld, Rbld) <
PackVersionComponents(14, 14, 26429, 3));相关问题:Compare version strings in Inno Setup
对于Windows测试,可以将其与GetWindowsVersionEx结合使用
GetWindowsVersionEx(WinVer);
WinVerPacked := PackVersionComponents(WinVer.Major, WinVer.Minor, WinVer.Build, 0);
if (ComparePackedVersion(WinVerPacked, PackVersionComponents(6, 1, 7601, 0)) < 0) or
((ComparePackedVersion(WinVerPacked, PackVersionComponents(6, 2, 0, 0)) >= 0) and
(ComparePackedVersion(WinVerPacked, PackVersionComponents(6, 3, 0, 0)) < 0)) then
begin
MsgBox(SetupMessage(msgWindowsVersionNotSupported), mbError, MB_OK);
Result := False;
end;与上述类似,这也应该是可行的:
if (WinVerPacked < PackVersionComponents(6, 1, 7601, 0)) or
((WinVerPacked >= PackVersionComponents(6, 2, 0, 0)) and
(WinVerPacked < PackVersionComponents(6, 3, 0, 0))) then在第一个场景中没有什么需要改进的。
https://stackoverflow.com/questions/64872170
复制相似问题