- NSIS Discussion
- Correct usage of $(AndIfNot)
Archive: Correct usage of $(AndIfNot)
nawfal
28th July 2012 09:50 UTC
Correct usage of $(AndIfNot)
I tried in vain this:
1 ${IfNot} ${SectionIsSelected} ${Section2}
2 ${AndIfNot} ${SelectionIsSelected} ${Section4}
3 Abort
4 ${EndIf}
What I want is I want to exit a function if both section 2 and section 4 are unselected. But the above code doesnt compile saying there is an error in
line 2 required 4 parameters, passed 3. How to do this logic correctly?
MSG
28th July 2012 11:19 UTC
First of all, you cannot use abort to break out of a functioncall. You'll have to use a goto functionend instead.
Second, ${AndIfNot} ${SelectionIsSelected} ${Section4} is correct, assuming ${Section4} is defined. Do you get a warning about non-existing defines? But the error in "line 2" does not make sense. Did you mean in [i]macroline[i] 2? What is the exact error from the compiler?
nawfal
28th July 2012 11:52 UTC
1. I got the Abort call from Show custom page when a section has been selected link. I am using it in the function to display my custom IO page (by writing Abort I am not displaying the page). And it is working too (like returning from a function, not actually aborting the installation itself). What is abort meant for then?
2. The error I am getting is below:
Function: "Hi"
!insertmacro: _If
!insertmacro: end of _If
!insertmacro: _And
!insertmacro: macro "_And" requires 4 parameter(s), passed 3!
Error in script "D:\Project\CTVI\CTVI\Setup\New Text Document.nsi" on line 33 -- aborting creation process
No, section 4 is properly defined. I get the function executed if I am not using AndIfNot. I am attaching a simple installer code that will reproduce the error I posted above.
Afrow UK
28th July 2012 12:05 UTC
You've written "SelectionIsSelected" instead of "SectionIsSelected".
Stu
nawfal
28th July 2012 12:10 UTC
omGGGGGGGG....... Ooops, I copy pasted from somewhere!
Infact turned out to be your own post:D:D:):p
Anders
28th July 2012 15:15 UTC
Originally posted by MSG
First of all, you cannot use abort to break out of a functioncall. You'll have to use a goto functionend instead.
You can use Return, or if you want to set the abort flag you can use Abort...
MSG
29th July 2012 07:17 UTC
Originally posted by Anders
or if you want to set the abort flag you can use Abort...
Unless you're in an nsDialogs callback function, of course. >__<
nawfal
29th July 2012 08:25 UTC
See section 4.5.3 in the manual, Abort call can be used to not show a custom page..
MSG
29th July 2012 08:44 UTC
Err oops, sorry my bad. The 'quit' command doesn't work in nsDialogs callbacks (like onClick etc). Not sure about abort.
Afrow UK
29th July 2012 11:49 UTC
Yes calling Abort in the custom page show function has the same effect as not showing the page (thereby skipping it).
Edited my post :)
Stu
demiller9
29th July 2012 14:42 UTC
Originally posted by Afrow UK
Edited my post :)
Stu
Rewriting history, Stu? ;)
The post you fixed is one of four that had 'SelectionIsSelected'. Posts # 31, 33, and 36 on that old thread still have that slip.
Don