NSIS:在3.X版本之间切换

时间:2019-01-02 11:20:38

标签: windows-installer nsis

我希望我的脚本与nsis-3.03nsis-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的系统上构建错误。

1 个答案:

答案 0 :(得分:1)

!if 0n1 > 0 ; >= 3.0b0之所以有效,是因为较旧的版本不理解0n1并将其视为0,因此在较旧的版本中它仅变为0 > 0

即使没有人在编译时指定版本,NSIS v3.04和更高版本也会将NSIS_PACKEDVERSION强制为可用的值。

要检测在.NSH中实现的特定功能,您只需检查定义或宏是否存在,就无需进行版本检查:

!include x64.nsh
!ifdef IsNativeMachineArchitecture
...
!else
...
!endif