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

댓글

댓글 본문
작성자
비밀번호
  1. CraXicS
    Windows 방화벽 제어는 netsh advfirewall 명령줄 옵션을 NSIS에서 직접 실행하거나 http://nsis.sourceforge.net......-in 등의 플러그인을 사용하는 방법이 있습니다. http://ospace.tistory.com/174 이곳에서 해당 플러그인이 간략하게 설명되어 있습니다. 서비스 또한 sc 명령줄 옵션을 실행하거나 http://nsis.sourceforge.net......gin 플러그인을 사용하면 됩니다.
    대화보기
    • 방문객
      nsis 기능중에 방화벽차단, 서비스 등록 같은 기능에 대해 설명한 페이지가 있나요 ?? 아님 혹시 자료가 있으면 부탁좀드립니다.
      대화보기
      • CraXicS
        NSIS를 설치한 후 Visual Studio Code를 설치하셨나요?
        컴파일 시 번개 문양 또는 단축키를 사용하셨나요?
        종합적인 문제 해결을 위해 아래의 절차를 따라해 보세요.

        1. NSIS도 설치해야 합니다.
        -NSIS 컴파일러가 설치된 상태에서 컴파일해야 하기 때문에 공식 홈페이지(http://nsis.sourceforge.net/Download)에서 다운로드 받아 설치해주세요.
        2. (설치 순서와 관계없이) 설치된 상태라면 makensis.exe를 환경변수에 등록해주세요.
        -자세한 절차는 위 문서에 작성되어 있습니다.
        3. Visual Studio Code에서 작업 폴더를 열 때 한글이 있는 디렉터리를 피해주세요.
        -특히 한글로 된 계정 이름이 있는 디렉터리 안에서 컴파일하거나 소스 폴더 및 파일 이름이 한글이면 오류가 날 수 있습니다. (파일->폴더 열기)
        4. Visual Studio Code를 종료한 후 관리자 권한으로 실행하여 컴파일해보세요.
        -관리자 권한으로 실행 시 Visual Studio Code 제목 표시줄에 [관리자] 접미사가 붙습니다.
        5. 컴파일 시 작업->빌드 작업 실행이 아닌 Ctrl+Shift+B 키 또는 번개 문양 버튼을 클릭해 컴파일하세요.
        6. 컴파일 후 바로 인스톨러를 실행하고나서 다시 소스파일의 수정사항 없이 짧은 시간에 여러번 컴파일을 하면 "Compilation failed, see output for details" 오류 메시지가 나타날 수 있습니다.
        -실행 중인 인스톨러를 모두 종료하고 몇 십초 기다렸다가 다시 시도하거나 작업 폴더에서 생성된 인스톨러 파일을 삭제한 후 시도하세요.

        그래도 문제가 해결되지 않으면 댓글 달아주세요.
        대화보기
        • 구독자
          안녕하세요

          visual studio code를 다운받아서 따라해보려는데

          빌드작업실행 하면

          상단에

          "실행할 빌드 작업을 찾을 수 없습니다."

          라는 메시지가 나오고 빌드가 안되는데

          도움좀 구할 수 있을까요?

          구글링 해 봐도 답을 찾을 수가 없네요..
        버전 관리
        CraXicS
        현재 버전
        선택 버전
        graphittie 자세히 보기