NSIS:检查是否选择了sectiongroup中的section

NSIS:检查是否选择了sectiongroup中的section,nsis,Nsis,我有一个NSIS脚本,包含许多部分和一个部分组。这仅用于显示目的,例如: SectionGroup /e "ERP Integration" Section /o "Exact" SEC_EXACT ; section stuff SectionEnd Section /o "Navision" SEC_NAV ; section stuff SectionEnd SectionGroupEnd 现在,我想检查是否选择了特定的小

我有一个NSIS脚本,包含许多部分和一个部分组。这仅用于显示目的,例如:

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

    Section /o "Navision" SEC_NAV
        ; section stuff
    SectionEnd
SectionGroupEnd
现在,我想检查是否选择了特定的小节。你有Sections.nsh标题和一些漂亮的宏,所以我尝试:

    !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}:
但是,如果选择了组中的一个子部分,则返回true


是否有办法在不受组中其他节干扰的情况下检查是否选择了组中的特定节?

您发布的代码应适用于节组中的单个节。我能看到的唯一问题是如果SectionFlagiSet${SEC_NAV}。。。代码显示在you.nsi中实际部分的前面。在处理section命令之前,不会定义节索引的定义(SEC_-EXACT,SEC_-NAV),因此${SEC_-NAV}将不是有效数字,SectionFlagIsSet可能会将其处理为0,这是您的节组

您还应该切换到逻辑库,以便代码如下所示:

${If} ${SectionIsSelected} ${SEC_NAV}
;....
${Else}
;....
${EndIf}

你是对的,这段代码是有效的,我在别的地方出错了,这段代码不起作用。在NSIS中调试总是很困难:-)