NSIS安装打包程序的版本比较方便做后续逻辑处理
Posted 一如年少模样
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSIS安装打包程序的版本比较方便做后续逻辑处理相关的知识,希望对你有一定的参考价值。
因为当时公司的项目打包卸载前期出现了一些问题,只能做个补丁来弥补,考虑到不影响后期的项目,分隔版本号,以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
以上是关于NSIS安装打包程序的版本比较方便做后续逻辑处理的主要内容,如果未能解决你的问题,请参考以下文章