Skip to content
⌘ NSIS Forum Archive

Create custom ${IF}... Test

7 posts

xbarns#

Create custom ${IF}... Test

Hi all,

i hope my headline is somewhere in the vincinity of being correct of what i will describe now, if not i hope you can still help me 🙂

I want to create my own "string" that i can use with the ${IF}..${ENDIF} clause. For example with logiclib you can use


${IF} ${silent}
#do stuff
${ENDIF}
i want to create my own ${silent}, in my case it should be:


${IF} $InstallPartOfApplication = 1
#do stuff
${ENDIF}
so "$InstallPartOfApplication = 1" should become ${InstallPartOfApplication)


${IF} ${InstallPartOfApplication)
#do stuff
${ENDIF}
now if $InstallPartOfApplication = 1 or not would be defined from a license file that is read during the beginning of the installation.

I hope (lots of hoping in this one) i could post my question understandable, and somebody can help me.

Btw. i looked at examples in the x64.nsh, which frankly i do not understand also looking at the silent part of logiclib.nsh did not bring me any step ahead i still wonder how _silent can be referenced from the !define below it....


!macro _Silent _a _b _t _f
IfSilent `${_t}` `${_f}`
!macroend
!define Silent `"" Silent ""`

Thanks a lot.
x
xbarns#
As oh so many times, i might have come up with my own solution.

Please advise if that would be a good way to do what i want



${IF} "LicensefilecontainsfeatureX"
!define InstallFeatureX `1 = 1`
${ELSE}
!define InstallFeatureX `1 = 0`
${ENDIF}

${IF} ${InstallFeatureX}
#do stuff
${ENDIF}
Thanks
x
Afrow UK#
That is not valid semantics. The code will not compile (have you even tried it?) You want:
!define InstallPartOfApplication `$InstallPartOfApplication = 1`
Stu
xbarns#
The code does compile, i have tried it 🙂

I will use your example anyway, it makes more sense 🙂

Thanks.
Afrow UK#
Originally Posted by xbarns View Post
The code does compile, i have tried it 🙂
Just for clarity, the exact code you posted, i.e.

${IF} "LicensefilecontainsfeatureX"
!define InstallFeatureX `1 = 1`
${ELSE}
!define InstallFeatureX `1 = 0`
${ENDIF}
will definitely not compile.

Stu
xbarns#
Oh (of course 🙂 ) you are right, this was a try of showing what i want to accomplish. With the "it compiles" i was referring to the 1 = 1 part.

Thanks for your help
Anders#
Just creating a define is ok for this sort of thing, but you if require more logic you need a macro, those last two macro parameters are the jump labels for true/false...