Archive: Can I make a script require a minimum NSIS version?


Can I make a script require a minimum NSIS version?
Hello!


I'd like to make sure that a certain script throws an error if compiled with a version prior to X like I can do in Autoconf:

AC_PREREQ(2.60)


Is there a way to achieve this with NSIS? I didn't find anything about this.

Thanks in advance,



Sebastian

!if `${NSIS_VERSION}` < 2.34
!error `NSIS version 2.34 or greater required.`
!endif

Stu


Thanks for the hint about ${NSIS_VERSION} but your code doesn't work, for two reasons:

Still a good start, I think I can make something of that.

the code should still work

!if `${NSIS_VERSION}` < v2.34
!error `NSIS version 2.34 or greater required.`
!endif


If I try that exact code with the string 2.35 it doesn't fail for my local NSIS 2.34. So it seems it's always false.


did you try enclosing v2.35 within quotes?


yes, no luck.


try this

!define NO "v2.35"

!if `${NSIS_VERSION}` < '${NO}'
!error `NSIS version 2.34 or greater required.`
!endif


I did some research in between. I found out the following:

With that and an idea from here I was able to construct this code for detecting NSIS >=2.34:

!ifndef NSIS_VERSION
; Anything before 2.0b4
!error "NSIS 2.34 or later required."
!endif
!define "X${NSIS_VERSION}"
!ifdef Xv2.33 | Xv2.32 | Xv2.31 | Xv2.30 | Xv2.29 | Xv2.28 | Xv2.27 | Xv2.26 | Xv2.25 | Xv2.24 | Xv2.23 | Xv2.22 | Xv2.21 | Xv2.20 | Xv2.19 | Xv2.18 | Xv2.17 | Xv2.16 | X2.15 | Xv2.14 | Xv2.13 | Xv2.12 | Xv2.11 | Xv2.10 | Xv2.09 | Xv2.08 | Xv2.07 | Xv2.06 | Xv2.05 | Xv2.04 | Xv2.03 | Xv2.02 | Xv2.01 | Xv2.0
; Stable releases, 2.15 without "v" prefix
!error "NSIS 2.34 or later required."
!endif
!ifdef Xv2.0b4 | Xv2.0rc1 | Xv2.0rc2 | Xv2.0rc3 | Xv2.0rc4 | Xv2.07b0
; Pre-releases
!error "NSIS 2.34 or later required."
!endif
!undef "X${NSIS_VERSION}"
Please report any bugs you find.

Originally posted by fabian.rap.more
try this

!define NO "v2.35"

!if `${NSIS_VERSION}` < '${NO}'
!error `NSIS version 2.34 or greater required.`
!endif
Just saw this. I tried that and with other quote chars as well - still doesn't work for me. It makes me wonder if you actually try the code you paste here.

I think none of these commands allow use of variables.


i always try my scripts before posting them...............


You're right, that doesn't work.
This does though. Used a bit of a hack to strip the v from the front using /date:


!define VERSION_A 2.34
!define /date VERSION_B %${NSIS_VERSION}
!if `${VERSION_B}` < `${VERSION_A}`
!error `NSIS version ${VERSION_A} or greater required. You are using ${NSIS_VERSION}.`
!endif


Stu

The only problem I can think of is that it accepts Xrc1 if X is required. Other than that very smart solution.

I made a macro/file of that, see attachment. Usage is

!include "RequireVersion.nsh"
!insertmacro REQUIRE_VERSION "2.34"

That's good. Should make a Wiki page.

Stu