NSIS:在 3.X 个版本之间切换
NSIS: Switch between 3.X versions
我想让我的脚本与 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 的系统上构建错误。
!if 0n1 > 0 ; >= 3.0b0
之所以有效,是因为旧版本不理解 0n1 并将其视为 0,因此它在旧版本中变为 0 > 0
。
NSIS v3.04 及更高版本强制 NSIS_PACKEDVERSION 成为一个有点可用的值,即使在编译时没有人指定版本。
要检测在 .NSH 中实现的特定功能,您只需检查定义或宏是否存在,无需进行版本检查:
!include x64.nsh
!ifdef IsNativeMachineArchitecture
...
!else
...
!endif
我想让我的脚本与 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 的系统上构建错误。
!if 0n1 > 0 ; >= 3.0b0
之所以有效,是因为旧版本不理解 0n1 并将其视为 0,因此它在旧版本中变为 0 > 0
。
NSIS v3.04 及更高版本强制 NSIS_PACKEDVERSION 成为一个有点可用的值,即使在编译时没有人指定版本。
要检测在 .NSH 中实现的特定功能,您只需检查定义或宏是否存在,无需进行版本检查:
!include x64.nsh
!ifdef IsNativeMachineArchitecture
...
!else
...
!endif