2010-06-24 1 views
1

많은 섹션과 섹션 그룹이있는 NSIS 스크립트가 있습니다. 이는 디스플레이 목적으로 만 사용됩니다 (예 :NSIS : sectiongroup의 섹션이 선택되었는지 확인하십시오.

).
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를 반환합니다.

그룹의 특정 섹션이 그룹의 다른 섹션의 간섭없이 선택되었는지 확인하는 방법이 있습니까?

답변

2

게시 한 코드는 섹션 그룹 ​​내의 단일 섹션에 올바르게 작동해야합니다. SectionFlagIsSet $ ​​{SEC_NAV} ... 코드가 앞에있는 앞에 나타나는 경우에만 볼 수있는 유일한 문제는 .nsi의 실제 섹션입니다. 섹션 인덱스 (SEC_EXACT, SEC_NAV)에 대한 정의는 섹션 명령이 처리 될 때까지 정의되지 않으므로 $ {SEC_NAV}는 유효한 숫자가 아니며 SectionFlagIsSet은 아마도이를 0으로 처리하고 섹션 그룹입니다.

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

당신 말이 맞아 나는이 하나가 작동하지 만드는 다른 곳에서 오류가 발생했습니다,이 코드가 작동 : 코드의 모습 있도록

는 또한 논리 lib 디렉토리로 전환해야한다. 디버깅은 항상 NSIS에서 어렵습니다 :-) – Rogier