2017-05-14 9 views
0

5 개의 섹션/구성 요소로 구성된 설치 프로그램을 만들었습니다. 구성 요소 페이지가 어떤 구성 요소가 설치되었는지 확인하기 전에 사전 기능을 만들었습니다. 현재 설치되지 않은 구성 요소 만 구성 요소 페이지에 표시되어야합니다.NSIS는 섹션을 제거한 후에도 설치합니다.

!define MUI_PAGE_CUSTOMFUNCTION_PRE selectSections 
!insertmacro MUI_PAGE_COMPONENTS 

... 
Function selectSections 
      ; remove sections which are already installed 
      ReadRegStr $0 HKLM "${REG_INSTALL}" "SEC_EXTRACTOR" 
      IfErrors +2 
      !insertmacro RemoveSection ${SEC_EXTRACTOR} 
      !insertmacro SelectSection ${SEC_EXTRACTOR} 
      ; so on for all components 
FunctionEnd 

그래서 모든 구성 요소를 먼저 설치 한 다음 설치 프로그램을 다시 실행합니다. 이번에는 구성 요소 페이지에 구성 요소가 표시되지 않습니다. 그러나 해당 페이지에서 install을 누르면 모든 섹션이 여전히 실행됩니다. 누구든지 도와 줄 수 있습니까?

는 (나는 어떤 구성 요소를 나열하지 않는 구성 요소 페이지에서 설치 버튼을 눌렀습니다.하지만 세부 정보 창에서 그 부분이 설치되는 참조하십시오.)

때문에 매크로를 건너 뛸 상대 점프를 사용하지 마십시오

답변

1

매크로는 하나 이상의 명령어가 될 수 있습니다. LogicLib.nsh에서 IfErrors label 또는 ${If} ${Errors}을 사용하십시오.

+0

감사합니다. Anders! 이제 올바르게 작동합니다. – Puneet