NSIS 인스톨러를 생성하기 위해서는 NSIS 스크립트를 먼저 작성해야 합니다. NSIS 스크립트는 특수한 문법을 적용한 단순한 텍스트 파일입니다. 어떠한 텍스트 편집기로도 이 스크립트를 편집할 수 있습니다. NSIS는 스크립트 오류가 발생했을 때, 줄번호를 통해 오류의 위치를 알려주므로 줄 번호를 보여주는 텍스트 편집기를 사용할 것을 권장합니다. 문법 강조를 지원하는 에디터 또한 권장합니다. NSIS Wiki에서 NSIS를 위해 만들어진 에디터와 문법 강조 파일을 다운로드 할 수 있습니다.
먼저 NSIS 공식 홈페이지에서 NSIS를 다운로드 받아 설치합니다. 이 문서에서는 NSIS 3.03 버전을 기준으로 진행합니다.
제가 추천하는 NSIS 개발 환경은 Visual Studio Code 또는 Atom입니다. 저는 Visual Studio Code를 사용하겠습니다. VSCode 실행 후 왼쪽 확장을 클릭하여 NSIS를 검색한 후, 관련된 확장 프로그램을 설치합니다.
설치 후 작업폴더를 열고 *.nsi 확장자를 가진 새 파일을 생성합니다. 컴파일 테스트를 위해 아래와 같이 소스코드를 입력하여 아무런 작업도 하지 않는 가장 간단한 인스톨러를 생성합니다. 방금 설치한 NSIS 확장이 코드 자동 완성 기능을 제공하므로 3초 안에 작성할 수 있습니다.
OutFile "file_name.exe" Section "section_name" section_index_output # your code here SectionEnd
VSCode 오른쪽 상단에 빌드와 관련된 옵션들이 있습니다. 두번째 버튼(Ctrl Shift B)을 눌러 컴파일을 시도합니다.
PATH 환경변수 문제로 인해 컴파일 시 makensis를 찾을 수 없다는 오류가 나타나면 Windows 환경변수 중 path 변수에 makensis 컴파일러의 경로를 추가합니다. 사용자 변수와 시스템 변수 간의 차이와 그 영향을 모른다면, 시스템 변수 영역의 path 변수에 추가하십시오. 그리고 VSCode를 다시 시작합니다.
한글 등 비 ASCII 문자가 스크립트 파일 내에 있으면 컴파일 도중 Bad text encoding 오류가 나타날 수 있습니다. 텍스트 인코딩을 UTF-8에서 EUC-KR로 변경합니다. VSCode 오른쪽 하단에 인코딩을 변경할 수 있는 옵션이 있습니다.
컴파일에 성공했다면 Run(실행) 및 Reveal(폴더 열기) 버튼이 보이는 컴파일 성공 메시지가 나타납니다. VSCode를 관리자 권한으로 실행하지 않았다면 Run은 아무런 반응이 없을 것입니다. 폴더에서 직접 실행하거나, VSCode를 관리자 권한으로 실행시켜야 합니다. NSIS 인스톨러는 실행 시 기본값으로 관리자 권한을 요구합니다. 생성된 인스톨러 파일의 크기는 파일의 아이콘 등 기본 리소스 크기를 감안하여 대략 35.8 KB를 차지하게 됩니다.
아무런 작업을 지시하지 않았으므로 실행과 동시에 설치가 완료되었다고 나타납니다.
이제 예제를 복사하여 직접 컴파일 해보면서 다른 절차 지향 프로그래밍 언어와의 차이를 인지하십시오. 가끔 예제 소스코드에서 설명되지 않는 부분이 있을 수 있으나 본 장은 튜토리얼 중심으로 설명하므로 깊은 문법은 뒷 장에서 설명합니다.
NSIS 스크립트에서 한 줄은 한 명령로 취급합니다. 만약 명령이 너무 길때에는 역슬래쉬(\)를 이어 명령을 연장할 수 있습니다. 그러면 컴파일러는 새 줄을 새 명령이 아닌 이전 줄의 연장된 줄로 인식합니다.
OutFile "file_name.exe" Section "section_name" section_index_output Messagebox MB_OK|MB_ICONINFORMATION \ "This is a sample that shows how to use line breaks for larger commands in NSIS scripts" SectionEnd
문자열에서 큰 따옴표를 사용할 때 $\”를 사용하여 큰 따옴표를 이스케이프하거나 ` 또는 ‘과 같이 다른 유형의 따옴표로 문자열을 인용할 수 있습니다. 포맷에 대한 좀 더 자세한 정보는 스크립트 파일 포맷을 참조하십시오.
스크립트 파일의 기본 확장자는 .nsi 입니다. 헤더 파일은 .nsh 확장자를 갖습니다. 헤더 파일은 코드를 하나 이상의 블럭으로 분리하여 스크립트의 모듈화를 구현합니다. 함수나 매크로를 헤더에 작성한 후 스크립트에 포함시키면 유지 보수를 쉽게 하고 스크립트 가독성을 올려줍니다. 스크립트에 헤더 파일을 포함시키기 위해서 !include 명령을 사용합니다. NSIS 설치 디렉터리의 Include 폴더 안에 있는 헤더 파일들은 경로를 따로 작성할 필요 없이 파일명만으로도 포함될 수 있습니다.
!include Sections.nsh