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

本文介绍了如何在NSIS安装打包程序中进行版本比较,通过VersionCompare和VersionConvert函数处理不同版本的卸载逻辑。在遇到项目打包问题时,通过比较版本号并转换为数字格式,根据返回值执行相应操作,确保不影响后续项目,并提醒用户安装过程中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为当时公司的项目打包卸载前期出现了一些问题,只能做个补丁来弥补,考虑到不影响后期的项目,分隔版本号,以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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值