NSIS备选如果,那么,否则,等等

时间:2012-09-14 08:58:21

标签: if-statement nsis

我的问题是,是否有类似LogicLib的替代插件?一个支持17.0.8.22之类的数字,因为我在注册表中的程序版本就是这样的数字,而且似乎LogicLib不支持Windows 7。 它确实像这样重新编写它:

${If} $0 = '17.0.22.0'

但这是失败/被忽略,

${If} $0 > '17.0.22.0'

2 个答案:

答案 0 :(得分:3)

正如Anders所说,VersionCompare宏可以处理复杂的版本比较。

这是一个小例子:

!include "logiclib.nsh"
!include "wordfunc.nsh"
OutFile "version.exe"

!define v1 "1.4.0"
!define v2 "1.3"

Section

    ${VersionCompare} "${v1}" "${v2}" $0
    ${select} $0
        ${case} 0
            messagebox MB_OK "${v1} = ${v2}"
        ${case} 1
            messagebox MB_OK "${v1} newer than ${v2}"
        ${case} 2
            messagebox MB_OK "${v1} older than ${v2}"
    ${endselect}

SectionEnd

答案 1 :(得分:1)

VersionCompare是NSIS附带的辅助宏的一部分......