即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

NSIS安装打包程序的版本比较方便做后续逻辑处理

编程语言 u012896330 14℃ 0评论

因为当时公司的项目打包卸载前期出现了一些问题,只能做个补丁来弥补,考虑到不影响后期的项目,分隔版本号,以1.0.12为分割线,判断new or old,然后分别做出不同的卸载逻辑。



1.VersionCompare:

*比较版本数字

语法:

    ${VersionCompare} "[Version1]" "[Version2]" $var
    "[Version1]"        ; First version
    "[Version2]"        ; Second version
    $var                ; Result:
                        ;    $var=0  Versions are equal
                        ;    $var=1  Version1 is newer
                        ;    $var=2  Version2 is newer

例子:

    Section
        ${VersionCompare} "1.1.1.9" "1.1.1.01" $R0
        ; $R0="1"
    SectionEnd

2.VersionConvert

*将版本号转换成数字格式然后再比较。

语法:

${VersionConvert} "[Version]" "[CharList]" $var
"[Version]"         ; Version
                    ;
"[CharList]"        ; List of characters, which will be replaced by numbers
                    ; "abcdefghijklmnopqrstuvwxyz" (default)
                    ;
$var                ; Result: converted version

注意:

Converted letters are separated with dot

If character is non-digit and not in list then it will be converted to dot

例子1:

Section
    ${VersionConvert} "9.0a" "" $R0
    ; $R0="9.0.01"

    ${VersionConvert} "9.0c" "" $R1
    ; $R1="9.0.03"

    ${VersionCompare} "$R0" "$R1" $R2
    ; $R2="2"   version2 is newer
SectionEnd

例子2:

Section
    ${VersionConvert} "0.15c-9m" "" $R0
    ; $R0="0.15.03.9.13"

    ${VersionConvert} "0.15c-1n" "" $R1
    ; $R1="0.15.03.1.14"

    ${VersionCompare} "$R0" "$R1" $R2
    ; $R2="1"   version1 is newer
SectionEnd

例子3:

Section
    ${VersionConvert} "0.15c+" "abcdefghijklmnopqrstuvwxyz+" $R0
    ; $R0="0.15.0327"

    ${VersionConvert} "0.15c" "abcdefghijklmnopqrstuvwxyz+" $R1
    ; $R1="0.15.03"

    ${VersionCompare} "$R0" "$R1" $R2
    ; $R2="1"   version1 is newer
SectionEnd

一般不论是VersionCompare还是VersionConvert都会有返回值,我们可以根据返回值判断,做出对应的逻辑处理,提示给安装用户。



提示:用这两种方法一定记得 !include “WordFunc.nsh”



   ${If} $R0 == "2" ;1.012之前的版本

     StrCpy $OLD_PATH $UNINSTALL_PROG -10

     ****1.012之前的版本卸载逻辑处理**

 ${Else}
     ****1.012之后的版本卸载逻辑处理**

 ${EndIf}


转载请注明:CodingBlog » NSIS安装打包程序的版本比较方便做后续逻辑处理

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情