Archive: Correct usage of $(AndIfNot)


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?

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?


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.

You've written "SelectionIsSelected" instead of "SectionIsSelected".

Stu


omGGGGGGGG....... Ooops, I copy pasted from somewhere!

Infact turned out to be your own post:D:D:):p


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

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

See section 4.5.3 in the manual, Abort call can be used to not show a custom page..


Err oops, sorry my bad. The 'quit' command doesn't work in nsDialogs callbacks (like onClick etc). Not sure about abort.


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


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