Component 선택 페이지를 삽입하기 위해서 아래 매크로를 입력합니다.
NSIS는 선택된 Section만을 설치를 하게 되는데요.
프로그램에서 꼭 설치를 해야만 하는 필수 요소들이 있는데요.
이것들을 사용자들이 선택해제 하지 못하도록 Read-Only로 나타내야할 필요가 있습니다.
그럴경우 Section 안에 아래와 같은 코드를 입력하면 됩니다.
SectionIn RO
기본값으로 선택을 해제해야 할 필요가 있는 경우가 있습니다.
이렇게 하기 위해서는 먼저 Sections.nsh 파일을 인클루드합니다.
Sections.nsh 파일을 보시면 여러가지 유용한 매크로가 있습니다.
자 그럼 저희들의 결과를 볼까요?
3개의 Section이 있구요, 위의 2개는 필수 설치 요소이구요, 나머지 하나는 사용자 선택 요소인데 기본으로 선택 되어 있지 않습니다.
즉 사용자가 설치를 해야 하기 위해서는 그 요소를 선택해야만 합니다.
; Component를 선택할 수 있도록 한다.
Page Components
이렇게 하면 Section들의 이름이 모두 Component 페이지에 표시가 되구요. 기본값으로 선택이 되어 있습니다.NSIS는 선택된 Section만을 설치를 하게 되는데요.
프로그램에서 꼭 설치를 해야만 하는 필수 요소들이 있는데요.
이것들을 사용자들이 선택해제 하지 못하도록 Read-Only로 나타내야할 필요가 있습니다.
그럴경우 Section 안에 아래와 같은 코드를 입력하면 됩니다.
SectionIn RO
Section "DLL" SEC02
SectionIn RO
SetOutPath "$INSTDIR"
File "AutoUp.dll"
File "IsGUI2008.dll"
File "IsUtil2008.dll"
File "log4cxx.dll"
File "cximagecrt.dll"
File "GdiPlus.dll"
File "mfc90.dll"
File "msado15.dll"
File "msvcp90.dll"
File "msvcr90.dll"
File "msvcrt.dll"
File "python26.dll"
File "pythoncom26.dll"
File "pywintypes26.dll"
File "WinGraphviz.dll"
File "Zip.dll"
File "Zlib1.dll"
;File "CrashRpt.dll"
SectionEnd
앞서도 얘기 했지만 Component 페이지에 표기되는 Section들은 기본적으로 선택이 되어 있습니다.기본값으로 선택을 해제해야 할 필요가 있는 경우가 있습니다.
이렇게 하기 위해서는 먼저 Sections.nsh 파일을 인클루드합니다.
!include "Sections.nsh"
.onInit 함수에서 즉 페이지가 표시되기 전에 원하는 Section을 Unselect합니다.Function .onInit
ReadRegStr $R0 HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
StrCmp $R0 "" done
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
"${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \
previous version or `Cancel` to cancel this upgrade." \
IDOK uninst
Abort done
uninst:
ClearErrors
; Wait for completing Uninstaller
ExecWait '"$R0" _?=$INSTDIR'
;abort - no more needed
ifErrors no_remove_uninstaller
no_remove_uninstaller:
done:
; SEC03을 unselect한다.
!insertmacro UnselectSection ${SEC03}
FunctionEnd
여기서 SEC03은 Section의 Index값입니다.Sections.nsh 파일을 보시면 여러가지 유용한 매크로가 있습니다.
자 그럼 저희들의 결과를 볼까요?
3개의 Section이 있구요, 위의 2개는 필수 설치 요소이구요, 나머지 하나는 사용자 선택 요소인데 기본으로 선택 되어 있지 않습니다.
즉 사용자가 설치를 해야 하기 위해서는 그 요소를 선택해야만 합니다.
댓글
댓글 쓰기