[태그:] NSIS
NSIS 스크립트는 기본적으로 위에서 아래로 순서대로 실행이 된다지만 약간 헷갈리기도 합니다. 컴파일 타임 명령과 특히 이곳저곳에 섞이는 인스톨러 속성 명령때문이 아닌가 합니다.컴파일 타임 명령
컴파일되면서 그때 그때 실행되면서 실행 인스톨러에는 영향을 미치지 않습니다. 예로 (현재 디렉토리 c:\test\test 이고 압축할 파일은 C:\test\test.exe 일때)
Section -PrePare !cd .. File 'test.exe' SectionEnd
이렇게 하면 컴파일러가 컴파일하면서 디렉토리를 한번 상위 디렉으로 이동해서 test.exe 를 압축합니다.
Section -PrePare File '..\test.exe' SectionEnd
과 같은 결과입니다. 사실상 거의 쓸일이 없습니다만… 컴파일 타임 명령은 주로 !define 명령이 사용됩니다.
컴파일 타임 명령은 인스톨 속성 명령과 달리 실행 순서가 되야 실행됩니다.
인스톨러 속성 명령
인스톨러를 초기화합니다. 컴파일러는 인스톨 속성 …
Sections
섹션이란 앞에서도 언급했듯이 NSIS 설치관리자의 핵심을 이루는 것입니다. NSIS는 반드시 하나 이상의 섹션을 포함해야하며 이 섹션들은 아래와 같은 규칙하에 그 밑의 명령들로 관리됩니다.
- 각 섹션은 0개 이상의 명령을 포함합니다. (하나도 없을 수도 있습니다).
- 섹션은 설치마법사에 의해 순서대로 실행되며 ComponentText 가 설정되어 있다면 사용자는 각 보이는 섹션을 선택하거나 해제할 수 있습니다.
- 만약 섹션의 이름이 ‘Uninstall’ 이거나 섹션 이름앞에 ‘un.’ 이라는 접두어를 붙이면 이것은 설치제거때에만 쓰입니다.
Section Commands
…AddSize size_kb
설치관리자에게 현재 섹션이 추가로 size_kb 키로바이트 만큼 필요하다고 알려줍니다. 이 명령은 오직 섹션에서만 유효합니다.Section AddSize 500 SectionEndSection
[/o] [([!]|[-])section_name] [section index output]새로운 섹션을 시작합니다. 만약 섹션이름이 빈공간이거나
NSIS의 장점
… - 파일크기가 작다.
- 거의대부분의 윈도와 호환된다.
- 특수한 압축방식으로 최소한의 오버헤드와 따로 자동압축풀림 기능을 사용할 필요가 없습니다.
- 스크립트 방식으로 인스톨러의 모든 동작을 직접 제어할 수 있습니다.
- 다국어를 지원합니다.
- 인터페이스나 대화상자를 편집할 수 있습니다.
- 필요한 기능은 플러그인으로 추가할 수 있습니다.
- 웹을 통한 설치, 패치를 지원합니다.
- NSIS는 쉽게 하나의 설치마법사에 여러 프로젝트를 통합하거나 라이트, 풀 버전등을 만듭니다.
간단한 NSIS 문법
- 주석
“;”, “#” 이후의 문장은 주석입니다. /* 와 */ 사이의 문장은 주석입니다.
- 명령
명령 (인자) 입니다. 예) File “myfile.exe”
- 플러그인
플러그인 이름::명령 (인자)
- 숫자
10진수(일반적인 수), 16진수(앞에 0x를 붙입니다.), 8진수(앞에 0를 붙입니다.)
- 변수
변수명 앞에 $를 붙입니다.
NSIS Section이란?
NSIS에 있어서 섹션이란