NSIS:如何使用预处理器或
NSIS: How to use the preporcessor or
我想要这样的东西
!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
但是这个解决方案非常繁琐,那么||
呢?
我忘了引号。但是错误消息不是很有帮助。
这就是解决方案
!if "${Flag} == 5" || "${Flag} == 7"
...
!endif
!if
不支持多重表达式,支持1个或3个参数(不包括!
前缀)。 ||
只是一个布尔表达式 (OR
),其中至少一个参数的计算结果必须为真:
!if ${Foo} || ${Bar}
...
!endif
多个表达式必须一一求值:
!if ${Flag} = 5
!insertmacro DoSomething
!else if ${Flag} = 7
!insertmacro DoSomething
!endif
我想要这样的东西
!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
但是这个解决方案非常繁琐,那么||
呢?
我忘了引号。但是错误消息不是很有帮助。
这就是解决方案
!if "${Flag} == 5" || "${Flag} == 7"
...
!endif
!if
不支持多重表达式,支持1个或3个参数(不包括!
前缀)。 ||
只是一个布尔表达式 (OR
),其中至少一个参数的计算结果必须为真:
!if ${Foo} || ${Bar}
...
!endif
多个表达式必须一一求值:
!if ${Flag} = 5
!insertmacro DoSomething
!else if ${Flag} = 7
!insertmacro DoSomething
!endif