Archive: Loop to deselect sections doesn't work


Loop to deselect sections doesn't work


outfile `test.exe`
!include 'MUI.nsh'
!include 'LogicLib.nsh'
!define LOGICLIB_SECTIONCMP
!insertmacro MUI_PAGE_COMPONENTS


SectionGroup '!Parent' pnt

Section '!aaaa' aa

SectionEnd

Section '!bbbb' bb

SectionEnd

Section '!cccc' cc

SectionEnd

SectionGroupEnd

Function .OnInit
${For} $0 ${aa} ${cc}
!insertmacro UnSelectSection $0
${Next}
FunctionEnd


However if I change the .OnInit function content to the following, it works. Anybody knows why?

Function .OnInit

!insertmacro UnSelectSection ${aa}
!insertmacro UnSelectSection ${bb}
!insertmacro UnSelectSection ${cc}

FunctionEnd

Possibly a bug??
I've just been trying to figure this out for an hour or two since I read the other post you had on this question...

Your original code (the for loop) will work if you modify Sections.nsh. In that file change the $0 into $1 (including the push and pop) for the macro UnselectSection (lines 58 to 62).

Saving the registers before and after using them should make it indifferent to which register is used, but it doesn't seem to work with $0 as originally delivered!

Don


The macros use $0 internally so it fails. Use $1 for now and submit a bug report so it'll be fixed for the next version.


Here's a simple script that displays the macro 'Section' argument before and after the macro calls SectionGetFlags. I copied the macro into the nsi file twice, one copy uses $1 and the other uses the original $0.

The SectionGetFlags instruction seems to destroy the ${SECTION} argument, even if that argument has a different name (ie, I tried modifying its name and it still gets destroyed).

Don

[edit] I see Kichik found a problem, so my test script is redundant. ;)


Oh yes..this problem fixed.Thanks demiller9 and kichik.But now another problem found, see my new post "Modifying sectiongroup will make all its subsections restore default?"