NSIS 사용자 설명서

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

2.2 스크립트 파일

NSIS 인스톨러를 생성하기 위해 NSIS 스크립트를 먼저 작성해야 합니다. NSIS 스크립트는 특수한 문법을 적용한 단순한 텍스트 파일입니다. 어떠한 텍스트 편집기로도 이 스크립트를 편집할 수 있습니다. NSIS는 스크립트 오류가 발생했을 때, 줄번호를 통해 오류의 위치를 알려주므로 줄 번호를 보여주는 텍스트 편집기를 사용할 것을 권장합니다. 문법 강조를 지원하는 에디터 또한 권장합니다. NSIS Wiki에서 NSIS를 위해 만들어진 에디터와 문법 강조 파일을 다운로드 할 수 있습니다.

필자가 권장하는 IDE는 Visual Studio Code 또는 Atom 입니다. 이 문서에서는 Visual Studio Code를 사용해 NSIS IDE를 구축하는 방법을 설명하며, NSIS 문법 강조를 지원하는 편집기 목록은 Category:Syntax Highlighting을 참조하십시오.

이제 Visual Studio Code로 NSIS IDE를 구성하는 방법에 대해 서술합니다.
먼저 Visual Studio Code를 다운로드 받아 설치합니다.
실행 후 왼쪽 확장을 클릭하여 NSIS를 검색한 후, 관련된 확장 프로그램을 설치합니다.
필자는 NSIS(필수)와 NSIS Plug-ins를 설치했습니다.

Visual Studio Code에서 NSIS 플러그-인 설치
<Visual Studio Code에서 NSIS 플러그-인 설치>

설치 후 다시 로드를 클릭하여 Visual Studio Code를 재시작합니다.
새 파일(Ctrl+N)을 만든 후 .nsi 확장자로 저장합니다.
컴파일 테스트를 위해 아래와 같이 소스코드를 입력하여 아무런 작업도 하지 않는 가장 간단한 인스톨러를 생성합니다. 
Visual Studio Code에서 코드 자동 완성 기능을 제공하므로 3초 안에 작성할 수 있습니다.

OutFile "file_name.exe" # 생성될 인스톨러 파일의 이름을 지정합니다. 필수로 호출해야 하는 명령입니다.
Section "section_name" section_index_output # 섹션을 구현합니다. 최소 하나의 섹션은 반드시 필요합니다.
  # your code here
SectionEnd # 섹션을 닫는 문입니다.
이 예제를 컴파일할 때 인코딩 오류가 나타날 수 있습니다. UTF-8로 인코딩 된 스크립트 파일에 한글 등 비-ASCII 문자가 있는 경우 이러한 오류가 나타날 수 있습니다.
이럴 경우 비-ASCII 문자를 모두 제거하거나, 또는 스크립트 파일의 인코딩을 EUC-KR 등 해당 문자를 지원하는 인코딩으로 변경하십시오. Visual Studio Code 오른쪽 하단부에 인코딩 선택을 클릭하면 변경할 수 있습니다.

이제 오른쪽 상단의 번개 문양 버튼(Ctrl+Shift+B)을 클릭하여 스크립트 파일을 저장하고 컴파일을 수행합니다.
컴파일에 성공했다면 Run(실행) 및 Reveal(폴더 열기) 버튼이 보이는 컴파일 성공 메시지가 나타납니다.

컴파일 성공 화면
<컴파일 성공 화면>

컴파일 오류가 발생했다면 출력에 자세한 오류 메시지가 나타납니다.

생성된 인스톨러 파일의 크기는 파일의 아이콘 등 기본 리소스 크기를 감안하여 대략 35.8 KB를 차지하게 됩니다.

환경 변수 오류
<환경 변수 오류>

 

만약 위와 같이 PATH 환경 변수에서 makensis를 찾을 수 없다고 메시지가 나타나면 Windows 환경 변수 중 path 변수에 makensis 경로를 추가합니다.

사용자 계정 전체에 적용하려면 시스템 변수의 path에 추가합니다.

<환경 변수에 경로 추가>
<환경 변수에 경로 추가>
makensis.exe 기본 설치 경로는 C:\Program Files (x86)\NSIS\Bin 입니다.

인스톨러를 실행하면 관리자 권한을 요구한 뒤 실행됩니다. 아무런 작업을 지시하지 않았으므로 실행하자마자 설치가 완료되었다고 나타납니다.

빈 인스톨러 실행 화면
<빈 인스톨러 실행 화면>

이제 예제를 복사하여 직접 컴파일 해보면서 다른 절차 지향 프로그래밍 언어와의 차이를 인지하십시오.
가끔 예제 소스코드에서 설명되지 않는 부분이 있을 수 있으나 본 장은 튜토리얼 중심으로 설명하므로 깊은 문법은 생략합니다. 설명서의 뒷 장에서 나머지 언급되지 않은 문법에 대해 설명합니다.

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

댓글

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