실행 순서 DarkKaiser, 2007년 6월 13일2023년 9월 6일 NSIS 스크립트는 기본적으로 위에서 아래로 순서대로 실행이 된다지만 약간 헷갈리기도 합니다. 컴파일 타임 명령과 특히 이곳저곳에 섞이는 인스톨러 속성 명령때문이 아닌가 합니다.컴파일 타임 명령 컴파일되면서 그때 그때 실행되면서 실행 인스톨러에는 영향을 미치지 않습니다. 예로 (현재 디렉토리 c:\test\test 이고 압축할 파일은 C:\test\test.exe 일때) Section -PrePare !cd .. File 'test.exe' SectionEnd 이렇게 하면 컴파일러가 컴파일하면서 디렉토리를 한번 상위 디렉으로 이동해서 test.exe 를 압축합니다. Section -PrePare File '..\test.exe' SectionEnd 과 같은 결과입니다. 사실상 거의 쓸일이 없습니다만… 컴파일 타임 명령은 주로 !define 명령이 사용됩니다.컴파일 타임 명령은 인스톨 속성 명령과 달리 실행 순서가 되야 실행됩니다. 인스톨러 속성 명령 인스톨러를 초기화합니다. 컴파일러는 인스톨 속성 명령을 스크립트 전체를 분석해서 한번에 모아서 적용시킵니다. 즉, 섹션등에 포함되거나 하지만 않으면 스크립트 위치에 상관이 없습니다. 즉, 스크립트 맨위에 Name 명령있거나 맨 뒤에 Name 명령이 있거나 전혀 상관없습니다. 콜백 함수 Function .onInit 인스톨러가 실행되어 초기화가 막 끝난 시점. 보통 인스톨러가 시작되기 전 조건 검사 등을 여기서 검사합니다. (특정 프로그램을 종료시킨다거나. 등등..) Function .onGUIInit 인스톨러 화면을 메모리에 불러들이고 보여주기 직전 섹션 또는 사용자 함수 섹션이 순서대로 진행되며 섹션에서 함수들을 호출합니다. Function .onInstSuccess 설치가 끝나고 윈도가 닫히기 직전에 호출대개 위와 같은 순서를 거칩니다. 중간 중간에 이벤트에 따라 아래와 같은 콜백 함수가 호출되기도 합니다. Function .onInstFailed 인스톨 과정 중 언제든지 실패하면 호출됨 Function .GUIEnd 설치화면이 닫힌 직후에 호출됩니다. 설치 성공여부등에 전혀 상관 없습니다. 즉, 컴포넌트 페이지에서 컴포넌트 선택하다가 그냥 취소 눌러서 종료시켜도 화면이 사라질때 호출됩니다. Function .onMouseOverSection 컴포넌트 선택화면에서 마우스 커서가 섹션위에 위치할 때 호출됩니다. Function .onRebootFailed 인스톨 중에 Reboot 명령으로 재부팅을 시도했지만 실패하면 호출됩니다. Function .onSelChange 컴포넌트 페이지에서 선택한 섹션이 변경되면 호출됩니다. NSIS 배포NSIS