Skip to content
⌘ NSIS Forum Archive

Correct usage of $(AndIfNot)

11 posts

nawfal#

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#
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#
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.
nawfal#
omGGGGGGGG....... Ooops, I copy pasted from somewhere!

Infact turned out to be your own post😁😁🙂😛
Anders#
Originally Posted by MSG View Post
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#
Originally Posted by Anders View Post
or if you want to set the abort flag you can use Abort...
Unless you're in an nsDialogs callback function, of course. >__<
MSG#
Err oops, sorry my bad. The 'quit' command doesn't work in nsDialogs callbacks (like onClick etc). Not sure about abort.
Afrow UK#
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#
Originally Posted by Afrow UK View Post
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