NSIS学习记录(四)————NSIS脚本简介2

使用脚本

逻辑代码结构

虽然可以使用StrCmp,IntCmp,IfErrore,Goto等命令来执行条件语句和循环语句。然而,还有更简单的方法。
LogicLib提供了一些非常简单的宏,使得一些复杂结构的构建变得简单。在LogicLib.nsh中对它的语法进行了解释,与其他的编程语言相似,对初学者和进阶者都很友好。

条件语句

例如,不使用LogicLib库,对变量的校验方法

StrCmp $0 'some value' 0 +3
  MessageBox MB_OK '$$0 is some value'
  Goto done
StrCmp $0 'some other value' 0 +3
  MessageBox MB_OK '$$0 is some other value'
  Goto done
# else
  MessageBox MB_OK '$$0 is "$0"'
done:

使用LogicLib可以增加代码的可读性,例如:

${If} $0 == 'some value'
  MessageBox MB_OK '$$0 is some value'
${ElseIf} $0 == 'some other value'
  MessageBox MB_OK '$$0 is some other value'
${Else}
  MessageBox MB_OK '$$0 is "$0"'
${EndIf}

也可以使用switch的方法

${Switch} $0
  ${Case} 'some value'
    MessageBox MB_OK '$$0 is some value'
    ${Break}
  ${Case} 'some other value'
    MessageBox MB_OK '$$0 is some other value'
    ${Break}
  ${Default}
    MessageBox MB_OK '$$0 is "$0"'
    ${Break}
${EndSwitch}

LogicLib同样支持多条件判断,例如,下面的语句会在$0$1都为空的时候进行提示

${If} $0 == ''
${AndIf} $1 == ''
  MessageBox MB_OK|MB_ICONSTOP 'both are empty!'
${EndIf}

LogicLib不再使用标签和相对跳转,也就不会产生标签冲突,也不用每次脚本变更之后都去手动调整跳转偏移量

循环语句

通过对while,do,for循环语句的支持,循环也变得更为简单。以下为5次循环的示例。

StrCpy $R1 0
${While} $R1 < 5
  IntOp $R1 $R1 + 1
  DetailPrint $R1
${EndWhile}
${For} $R1 1 5
  DetailPrint $R1
${Next}
StrCpy $R1 0
${Do}
  IntOp $R1 $R1 + 1
  DetailPrint $R1
${LoopUntil} $R1 >= 5
LogicLib的引用

要使用LogicLib需要引用头文件:

!include LogicLib.nsh
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值