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)+构建;
    结束;
    
我只是想知道我们是否能够使用Inno Setup 6.1中引入的新“版本”Pascal函数等?

您可以使用(连同):

结果:=
(比较包装版本(
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

在第一个场景中没有什么需要改进的