xbarns
4th January 2012 16:25 UTC
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
4th January 2012 16:45 UTC
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
4th January 2012 17:21 UTC
That is not valid semantics. The code will not compile (have you even tried it?) You want:
!define InstallPartOfApplication `$InstallPartOfApplication = 1`
Stu
xbarns
5th January 2012 08:07 UTC
The code does compile, i have tried it :)
I will use your example anyway, it makes more sense :)
Thanks.
Afrow UK
5th January 2012 11:40 UTC
Originally posted by xbarns
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
5th January 2012 13:42 UTC
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
5th January 2012 20:17 UTC
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...