NSIS: переключение между версиями 3.X - PullRequest
0 голосов
/ 02 января 2019

Я хочу, чтобы мой скрипт был совместим с 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.

1 Ответ

0 голосов
/ 02 января 2019

!if 0n1 > 0 ; >= 3.0b0 работает, потому что более старые версии не понимают 0n1 и рассматривают его как 0, поэтому он просто становится 0 > 0 в более старых версиях.

NSIS v3.04 и более поздних версий заставляет NSIS_PACKEDVERSION быть несколько полезным значением, даже если никто не указывает версию при компиляции.

Чтобы обнаружить конкретную функцию, реализованную в .NSH, вы можете просто проверить, существует ли определение или макрос, нет необходимости выполнять проверку версии:

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