NSIS 스크립트는 기본적으로 위에서 아래로 순서대로 실행이 된다지만 약간 헷갈리기도 합니다.

컴파일타임명령과 특히 이곳저곳에 섞이는 인스톨러 속성 명령때문이 아닌가 합니다.


--------------

컴파일 타임 명령 - 컴파일되면서 그때 그때 실행되면서 실행 인스톨러에는 영향을 미치지 않습니다.


예로 (현재 디렉토리 c: est est 이고 압축할 파일은 C: est est.exe일때)


Section -PrePare

!cd ..

File 'test.exe'

SectionEnd


이렇게 하면 컴파일러가 컴파일하면서 디렉토리를 한번 상위 디렉으로 이동해서 test.exe 를 압축합니다.


Section -PrePare

File '.. est.exe'

SectionEnd


과 같은 결과입니다. 사실상 거의 쓸일이 없습니다만...

컴파일 타임 명령은 주로 !define 명령이 사용됩니다. 컴파일 타임 명령은 인스톨 속성 명령과 달리 실행 순서가 되야 실행됩니다.


인스톨러 속성 명령

인스톨러를 초기화합니다. 컴파일러는 인스톨 속성 명령을 스크립트 전체를 분석해서 한번에 모아서 적용시킵니다. 즉, 섹션등에 포함되거나 하지만 않으면 스크립트 위치에 상관이 없습니다.

즉, 스크립트 맨위에 Name 명령있거나 맨 뒤에 Name 명령이 있거나 전혀 상관없습니다.


콜백 함수


Function .onInit

인스톨러가 실행되어 초기화가 막 끝난 시점. 보통 인스톨러가 시작되기 전 조건 검사 등을 여기서 검사합니다. (특정 프로그램을 종료시킨다거나. 등등..)


Function .onGUIInit

인스톨러 화면을 메모리에 불러들이고 보여주기 직전


섹션 또는 사용자 함수

섹션이 순서대로 진행되며 섹션에서 함수들을 호출합니다.


Function .onInstSuccess

설치가 끝나고 윈도가 닫히기 직전에 호출

대개 위와 같은 순서를 거칩니다. 중간 중간에 이벤트에 따라 아래와 같은 콜백 함수가 호출되기도 합니다.

-----------


Function .onInstFailed

인스톨 과정 중 언제든지 실패하면 호출됨


Function .GUIEnd

설치화면이 닫힌 직후에 호출됩니다. 설치 성공여부등에 전혀 상관 없습니다. 즉, 컴포넌트 페이지에서 컴포넌트 선택하다가 그냥 취소 눌러서 종료시켜도 화면이 사라질때 호출됩니다.


Function .onMouseOverSection

컴포넌트 선택화면에서 마우스 커서가 섹션위에 위치할 때 호출됩니다.


Function .onRebootFailed

인스톨 중에 Reboot 명령으로 재부팅을 시도했지만 실패하면 호출됩니다.


Function .onSelChange

컴포넌트 페이지에서 선택한 섹션이 변경되면 호출됩니다.

... 등등의 콜백함수가 있습니다. (^^)

'Programming > tool' 카테고리의 다른 글

NSIS 값 읽어오기  (0) 2010.03.18
NSIS 기초지식  (0) 2010.03.18
같은 페이지에 계속 머무르기  (0) 2010.03.18
라디오버튼 컴포넌트 선택 기능 구현  (0) 2010.03.18
사용자 페이지 추가하기  (0) 2010.03.18

+ Recent posts