NSIS 사용자 설명서

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

4.5 페이지

NSIS 인스톨러(논-사일런트)는 페이지 집합을 가지고 있습니다. 각 페이지는 NSIS 내장 페이지가 될 수도 있고 또는 사용자 함수로 제작된(nsDialogs 또는 InstallOptions 예제 참조) 사용자 정의 페이지가 될 수도 있습니다.

스크립트는 페이지 순서, 모양, 동작을 제어합니다. 페이지를 건너뛸 수도 있으며 흰색으로 칠하거나, 특정 조건이 만족될 때까지 강제로 표시하게 할 수도 있습니다. 예를 들어 readme 페이지를 보여주거나, 입력을 위한 사용자 정의 페이지를 보여줄 수 도 있습니다. 이 토픽에서는 위의 모든 방법들을 학습합니다.

PageUninstPage라는 두 개의 중요한 기본 명령어가 있습니다. 전자는 인스톨러에 페이지를 추가하는 명령이며, 후자는 언인스톨러에 페이지를 추가하는 명령어입니다. 더 많은 고급 옵션을 설정할 수 있는 PageEx 명령어도 있습니다.

4.5.1 순서

페이지가 보여지는 순서는 스크립트에서 Page, UninstPage 및 PageEx 명령 순서와 같습니다.

Page license
 Page components
 Page directory
 Page instfiles
 UninstPage uninstConfirm
 UninstPage instfiles

이 코드는 처음에 라이선스 페이지를 보여줍니다. 그리고 설치 구성요소 선택 페이지를 보여준 뒤 설치 디렉터리 선택 페이지와 마지막으로 섹션이 수행되는, 즉 설치 로그를 출력하는 페이지를 보여줍니다. 언인스톨러는 처음에 설치 제거 확인 페이지를 보여준 뒤 설치 제거 로그 페이지를 보여줍니다.

또한 같은 타입의 페이지를 여러개 표시할 수도 있습니다.

이전 버전 NSIS 스크립트와의 호환성을 위해, 인스톨러 페이지가 사용되지 않으면 다음의 인스톨러 페이지가 암시적으로 추가됩니다.

license (LicenseTextLicenseData가 지정될 경우에만 적용)
components (ComponentText가 지정되고 보여지는 섹션이 두 개 이상일 경우에만 적용)
directory (DirText가 지정될 경우에만 적용)
instfiles

언인스톨러 페이지 명령어 없을 경우에도 다음의 페이지가 암시적으로 추가됩니다.

uninstall confirmation (UninstallText가 지정될 경우에만 적용)
instfiles

이 조치는 Deprecated 되었으므로 새로운 표준 문자열을 사용할 수 있는 page 명령어를 명시적으로 사용하는 방식으로 스크립트를 유지 보수하는 것을 권장합니다.

4.5.2 페이지 옵션

각 페이지는 어떻게 보여지고 동작할 것인지를 정의하는 고유한 데이터 집합을 가집니다. 이 토픽에서는 각 페이지의 데이터가 어떻게 사용되고 또 어떻게 설정할 수 있는지에 대해 기술합니다.

아래의 목록은 특정 페이지에 영향을 주는 명령어들입니다. 달리 언급되지 않는 한, 이 명령어는 PageEx 블록의 내외부 모두에서 사용될 수 있습니다. PageEx 블록 내부에서 사용되면 PageEx에 의해 설정된 현재 페이지만 영향을 받습니다. 그렇지 않으면 모든 페이지의 기본값으로 설정됩니다.

라이선스 페이지

구성요소 선택 페이지

디렉터리 선택 페이지

언/인스톨 로그 페이지

언인스톨 확인 페이지

페이지 캡션을 설정하려면 Caption을 사용하십시오.

4.5.3 콜백

NSIS의 각 내장 페이지는 세 가지 콜백 함수를 가지고 있습니다. pre-function, show function 및 leave-function이 그것들입니다. pre-function은 해당 페이지가 생성되기 바로 전에 호출되며 show-function은 페이지가 생성된 후 최종 사용자에게 보여지기 전에 호출됩니다. 그리고 leave-function은 사용자가 다음 버튼을 누른 직후 호출됩니다. (페이지가 사라지기 직전)

  • pre-function에서는 Abort을 사용해서 페이지를 건너뛸 수 있습니다.
  • show-function에서는 CreateFont, SetCtlColors, SendMessage 등을 사용해서 페이지의 사용자 인터페이스를 수정할 수 있습니다.
  • leave-function에서는 Abort을 사용해서 최종 사용자가 현재 페이지에 강제로 남게 할 수 있습니다.

사용자 정의 페이지는 두 가지 콜백 함수를 갖습니다. 하나는 필수로 생성해야 하며 다른 하나는 leave-function이며 내장 페이지의 leave-function와 같은 동작을 합니다.

Page license skipLicense "" stayInLicense
 Page custom customPage "" ": custom page"
 Page instfiles

 Function skipLicense
   MessageBox MB_YESNO "Do you want to skip the license page?" IDNO no
     Abort
   no:
 FunctionEnd

 Function stayInLicense
   MessageBox MB_YESNO "Do you want to stay in the license page?" IDNO no
     Abort
   no:
 FunctionEnd

 Function customPage
   GetTempFileName $R0
   File /oname=$R0 customPage.ini
   InstallOptions::dialog $R0
   Pop $R1
   StrCmp $R1 "cancel" done
   StrCmp $R1 "back" done
   StrCmp $R1 "success" done
   error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$\n$R1"
   done:
 FunctionEnd

4.5.4 Page

custom [creator_function] [leave_function] [caption] [/ENABLECANCEL]
  OR
internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]

인스톨러 페이지를 추가합니다. NSIS 내장 페이지와 사용자 정의 페이지 및 콜백 함수에 대한 정보는 위의 토픽을 참조하십시오.

internal_page_type은 아래의 항목 중 하나가 될 수 있습니다.

  • license - 라이선스 페이지
  • components - 구성요소 선택 페이지
  • directory - 설치 디렉터리 선택 페이지
  • instfiles - 섹션이 수행되는 설치 로그 페이지
  • uninstConfirm - 설치 제거 확인 페이지

인스톨러의 마지막 페이지는 혼란을 막기 위해 취소 버튼이 비활성화되어 있습니다. 무시하고 활성화하려면 /ENABLECANCEL를 사용하십시오.

4.5.5 UninstPage

custom [creator_function] [leave_function] [caption] [/ENABLECANCEL]
  OR
internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]

언인스톨러 페이지를 추가합니다. NSIS 내장 페이지와 사용자 정의 페이지 및 콜백 함수에 대한 정보는 위의 토픽을 참조하십시오.

internal_page_type 값은 Page를 참조하십시오.

4.5.6 PageEx

[un.](custom|uninstConfirm|license|components|directory|instfiles)

인스톨러 페이지를 추가합니다. un. 접두사를 사용하면 언인스톨러 페이지를 추가합니다. 모든 PageEx는 PageExEnd로 끝납니다. PageEx 블록 안에서 해당 페이지에서만 적용되는 옵션을 설정할 수 있습니다. 설정되지 않은 옵션은 PageEx 블록 외부의 값으로 설정되며 아무것도 설정되지 않은 경우 옵션 기본값으로 설정됩니다. 페이지의 하위 캡션을 설정하기 위해서는 Caption 또는 SubCaption을 사용합니다. PageEx를 사용하여 페이지의 콜백 함수를 설정하려면 PageCallbacks을 사용합니다. NSIS 내장 페이지와 사용자 정의 페이지에 대한 정보는 위의 토픽을 참조하십시오.

PageEx license
   LicenseText "Readme"
   LicenseData readme.rtf
 PageExEnd

 PageEx license
   LicenseData license.txt
   LicenseForceSelection checkbox
 PageExEnd

4.5.7 PageExEnd

PageEx 블록을 닫습니다.

4.5.8 PageCallbacks

([creator_function] [leave_function]) | ([pre_function] [show_function] [leave_function])

PageEx가 사용된 페이지에 대한 콜백 함수를 구현합니다. PageEx 블록 안에서만 사용될 수 있습니다. 콜백 함수에 대한 정보는 위의 토픽을 참조하십시오.

PageEx license
  PageCallbacks licensePre licenseShow licenseLeave
PageExEnd

댓글

댓글 본문
작성자
비밀번호
버전 관리
CraXicS
현재 버전
선택 버전
graphittie 자세히 보기