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

xiaoxiao2021-02-28  91

因为当时公司的项目打包卸载前期出现了一些问题,只能做个补丁来弥补,考虑到不影响后期的项目,分隔版本号,以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}
转载请注明原文地址: https://www.6miu.com/read-35214.html

最新回复(0)