我必须比较当前文件的版本,并且已经安装在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.50245
比4.3.1.50245
更重要。但是,如果我尝试将4.2.1.50245
与3.2.1.50245
进行比较(或者我比较50245
和40256
等),它会给我正确的结果。
答案 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