tags:

views:

21

answers:

1

I have a NSIS script with a number of sections and a section group. This is purely for display purposes, e.g.:

SectionGroup /e "ERP Integration"
    Section /o "Exact" SEC_EXACT
        ; section stuff
    SectionEnd

    Section /o "Navision" SEC_NAV
        ; section stuff
    SectionEnd
SectionGroupEnd

Now, I want to check if a particular subsection is selected. You have the Sections.nsh header with some nifty macro's for that, so I tried:

    !insertmacro SectionFlagIsSet ${SEC_NAV} ${SF_SELECTED} End${ProductName} ""
        StrCpy ${ConfigProductVar} "true"
        StrCpy ${ConfigGlobalVar} "true"
        nsislog::log "$INSTDIR\install.log" "${ProductName} is not yet installed and selected, call config"
    End${ProductName}:

However, this returns true if one of the subsections in a group is selected.

Is there a way to check if a particular section in a group is selected, without interference from other sections in the group?

+1  A: 

The code you have posted should work correctly for a single section inside a section group. The only problem I can see could be if the SectionFlagIsSet ${SEC_NAV}... code appears before the actual sections in you .nsi. The defines for the section index (SEC_EXACT,SEC_NAV) are not defined until the section command is processed, so ${SEC_NAV} would not be a valid number, SectionFlagIsSet would probably process that as 0 and that is your section group.

You should also switch to the logic lib so the code would look like:

${If} ${SectionIsSelected} ${SEC_NAV}
;....
${Else}
;....
${EndIf}
Anders
You are right, this code works, I had an error somewhere else making this one not work. Debugging is always hard in NSIS :-)
Rogier