Inno setup 我们能用新的吗;版本;Inno Setup 6.1中的函数使脚本更简单?
我在脚本中有几个地方使用版本号:Inno setup 我们能用新的吗;版本;Inno Setup 6.1中的函数使脚本更简单?,inno-setup,pascalscript,Inno Setup,Pascalscript,我在脚本中有几个地方使用版本号: 情景1 #define AppVerText() \ GetVersionComponents(SourceDir + '\Meeting Schedule Assistant.exe', \ Local[0], Local[1], Local[2], Local[3]), \ Str(Local[0]) + "." + Str(Local[1]) + "." + Str(Local[2])
- 情景1
#define AppVerText() \ GetVersionComponents(SourceDir + '\Meeting Schedule Assistant.exe', \ Local[0], Local[1], Local[2], Local[3]), \ Str(Local[0]) + "." + Str(Local[1]) + "." + Str(Local[2])
- 情景2
从注册表项中提取各种值{安装的版本是否至少为14.14?} 结果:=(专业<14)或 ((大调=14)和((小调<14)或 ((次要=14)和((Bld<26429)或 (Bld=26429)和(Rbld<3()()()))); 如果(结果)那么
- 情景3
这要求:{检查Windows版本} WindowsVersion:=GetWindowsVersion; 日志(格式('Windows版本:%x',[Windows版本]); (*Windows必须是Win 7 SP1(6.1.7601)、Win 8.1(6.3.9200)或更高版本, 赢10(10.0.10240) 见:http://www.jrsoftware.org/ishelp/index.php?topic=winvernotes Microsoft.Net Framework 4.6.2仅适用于这些操作系统。*) 如果(WindowsVersion
=MakeVersion(6,2,0))和 (WindowsVersion 函数MakeVersion(主要、次要、构建:基数):基数; 开始 结果:=(主要SHL24)+(次要SHL26)+构建; 结束;
结果:=
(比较包装版本(
PackVersionComponents(主要、次要、Bld、Rbld),
PackVersionComponents(14,14,26429,3))<0;
就代码长度而言,这并没有多大改进。但它不容易出错,也更容易理解
我相信直接比较压缩版本号实际上是安全的(至少除非你的主版本不高于2^15)。尽管PackVersionComponents
不鼓励这样做
结果:=
(PackVersionComponents(大调、小调、Bld、Rbld)<
PackVersionComponents(14,14,26429,3));
相关问题:
对于Windows版本测试,您可以将其与:
GetWindowsVersionEx(WinVer);
WinVerPacked:=PackVersionComponents(WinVer.Major、WinVer.Minor、WinVer.Build、0);
如果(ComparePackedVersion(WinVerPacked,PackVersionComponents(6,1,7601,0))<0)或
((ComparePackedVersion(WinVerPacked,PackVersionComponents(6,2,0,0))>=0)和
(比较packedversion(WinVerPacked,PackVersionComponents(6,3,0,0))<0)),然后
开始
MsgBox(SetupMessage(MSGWindowVersionNotSupported),mbError,MB_OK);
结果:=假;
结束;
同样,如上所述,这也应该起作用:
if(winverpacking=PackVersionComponents(6,2,0,0))和
(Winverpacking
在第一个场景中没有什么需要改进的