NSIS安装程序中的版本比较

时间:2017-01-10 16:05:04

标签: nsis

我必须比较当前文件的版本,并且已经安装在NSIS安装程序中。我理解版本号是字符串,但我在几个地方读到,如果在逻辑操作中需要,NSIS会自动将字符串转换为整数。

为了测试目的,我编写了以下脚本:

Var Test1
Var Test2

section
    StrCpy $Test1 "4.3.1.50245"
    StrCpy $Test2 "4.2.1.50245"

    ${If} $Test1 > $Test2
        MessageBox MB_ICONSTOP  "$Test1 is bigger than $Test2" 
    ${Else}
        MessageBox MB_ICONSTOP  "$Test2 is bigger than $Test1" 
    ${EndIf}
    Quit
    sectionEnd

问题:它为我提供的结果4.2.1.502454.3.1.50245更重要。但是,如果我尝试将4.2.1.502453.2.1.50245进行比较(或者我比较5024540256等),它会给我正确的结果。

1 个答案:

答案 0 :(得分:3)

查看以下功能,版本比较 http://nsis.sourceforge.net/VersionCompare

Section
  ${VersionCompare} "1.1.1.9" "1.1.1.01" $R0
  ; $R0="1"
SectionEnd
; Result:
;   $var=0  Versions are equal
;   $var=1  Version1 is newer
;   $var=2  Version2 is newer

如果没有,另一种方法是实现字符串的爆炸,然后比较Major,Minor,Revision,...部分。但这可能有点过头了: http://nsis.sourceforge.net/Explode