我希望我的脚本与nsis-3.03
和nsis-3.04
兼容。我知道这一点:
!if 0n1 > 0 ; >= 3.0b0
!endif
但是我不明白为什么0n1 > 0
的意思是>= 3.0b0
?
我想做
!if ... ; version=[3.0-3.3]
; do stuff
!else if .., ; version > 3.3
; do other stuff
!else
; pass
!endif
我不能使用${NSIS_PACKEDVERSION}
,因为在基于debain的系统上构建错误。
答案 0 :(得分:1)
!if 0n1 > 0 ; >= 3.0b0
之所以有效,是因为较旧的版本不理解0n1并将其视为0,因此在较旧的版本中它仅变为0 > 0
。
即使没有人在编译时指定版本,NSIS v3.04和更高版本也会将NSIS_PACKEDVERSION强制为可用的值。
要检测在.NSH中实现的特定功能,您只需检查定义或宏是否存在,就无需进行版本检查:
!include x64.nsh
!ifdef IsNativeMachineArchitecture
...
!else
...
!endif