NSIS:如何使用前置程序或

时间:2018-08-20 07:37:20

标签: boolean nsis

我想要这样的东西

!if (${Flag} == 5) || (${Flag} == 7)
     ...
!endif

但是我收到错误消息!if expects 1-4 parameters, got 7. Usage: !if [!] value [(==,!=,<=,<,>,>=,&&,||) value2] [...]。我试过大括号,但无济于事。 documentation提到允许使用||

我也找到了解决方法

!macro test
    ...
!macroend
!if ${Flag} == 5
     !insertmacro test
!else if ${Flag} == 7
     !insertmacro test
!endif

但是此解决方案非常麻烦,那么||又是什么呢?

2 个答案:

答案 0 :(得分:1)

!if不支持多个表达式,它支持1或3个参数(不计算!前缀)。 ||只是一个布尔表达式(OR),其中至少一个参数必须取值为true:

!if ${Foo} || ${Bar}
     ...
!endif

多个表达式必须一个一地求值:

!if ${Flag} = 5
     !insertmacro DoSomething
!else if ${Flag} = 7
     !insertmacro DoSomething
!endif

答案 1 :(得分:0)

我忘记了引号。但是错误消息不是很有帮助。

这是解决方案

 !if "${Flag} == 5" || "${Flag} == 7"
     ...
 !endif