Archive: Create custom ${IF}... Test


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

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

That is not valid semantics. The code will not compile (have you even tried it?) You want:

!define InstallPartOfApplication `$InstallPartOfApplication = 1`
Stu

The code does compile, i have tried it :)

I will use your example anyway, it makes more sense :)

Thanks.


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

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


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...