본문으로 바로가기

NSIS를 사용하여 패키징 및 배포를 하기 위해 기본이 되는 최소한의 스크립트를 살펴보고, 간단하게 MUI를 적용해 보기로 한다.


참고로 본인은 프로그래머도 아니고 심지어 파워유저도 아니다. 그냥 관심이 있는 일반 유저일 뿐이다 .. ^^

즉, 아래의 내용이 정답이라는 맹신은 절대 하지 마시길 당부드리며 참고 정도만 하시는 것이 바람직 할 것이다.


최소화 버전(?)

먼저 생각해 볼 것으로 ... 아래 3가지 정도만 생각하면 기본적인 설치 프로그램은 만들어 진다.

인스톨 설치 파일 이름 - 우리가 만들려 하는 파일 이름 정도는 있어야 겠다.

기본 설치 디렉터리 경로 - 어디에 설치할 것인가 ..

설치할 파일 정보(이름, 경로 등) - 어떤 파일들을 패키징 할 것인가 ..


꼭 필요한 스크립트를 적용해 가장 간단할 수 있는 설치 파일용 스크립트는 다음과 같다.

OutFile "Product Name v0.0.1 - installer.exe"
InstallDir "$PROGRAMFILES\Product Name"

SetOverWrite on

Section "Base"
  SetOutPath "$INSTDIR"
  File "..."
  File "..."

  SetOutPath "$INSTDIR\doc"
  File "..."
  File "..."
SectionEnd

간단하게 내용을 살펴 보자 !!


먼저 OutFile 스크립트를 통해 생성하고자 하는 인스톨 파일의 이름을 지정해 준다.

(위의 내용으로 스크립트를 컴파일하게 되면 "Product Name v0.0.1 - installer.exe"라는 설치 파일을 생성할 것이다.)


다음으로 기본 설치 디렉터리를 지정하는데 InstallDir를 사용한다.


SetOverWrite는 설치하려는 파일이 대상 디렉터리에 있을 경우 덮어 쓸 것인지에 대한 옵션이다.

(옵션으로 on|off|try|ifnewer|lastused 등이 있다.)


가장 중요한 부분으로 실제 설치 파일을 컨트롤 하는 영역으로 SectionSectionEnd 사이의 내용이다.

SetOutPath로 설치(실제로는 복사)할 대상 디렉터리를 지정해 주고, File의 파일들을 설치하게 된다.


만약에 설치할 경로가 다를 경우 위의 예시와 같이 SetOutPath를 여러번 지정해 줘야 할 수도 있다.

그리고, File은 두가지 의미가 있는데, 하나는 설치할 원본 파일을 인스톨 파일 안에 패키징 하는 것이고, 다른 하나는 패키징한 파일을 앞서 SetOutPath에서 지정한 디렉터리에 설치하는 것을 의미한다. 주의할 사항은 만약 스크립트 파일(.nsi)과 설치할 원본 파일이 다른 경로에 있을 경우 File "..."의 파일명은 원본 파일이 있는 경로를 포함해야 한다.


위의 내용으로 설치를 진행하면 다음과 같은 설치 화면을 볼 수 있다.



MUI 적용하기

최소화 버전의 스크립트로도 충분히 패키징 및 배포가 가능하다. 하지만 설치 화면을 보면 너무 심플하다.

그래서 NSIS에서 MUI(Modern User Interface)를 사용하여 조금은 설치프로그램 다운 화면을 만들어 낼 수 있다.

!include "MUI.nsh"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "License.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "Korean"

Name "Product Name v0.0.2"
OutFile "Product Name v0.0.2 - installer.exe"
InstallDir "$PROGRAMFILES\Product Name"

SetOverWrite on

Section "Base"
  SetOutPath "$INSTDIR"
  File "..."
  File "..."

  SetOutPath "$INSTDIR\doc"
  File "..."
  File "..."
SectionEnd


Modern UI 포함하기

!include "MUI.nsh"

먼저 Modern UI 테마를 적용하기 위해 MUI.nsh 파일을 인클루드 한다. 주의할 점은 MUI 관련 스크립트 보다 앞서 정의해 주어야 한다.

페이지 넣기

!insertmacro MUI_PAGE_...로 각종 설치과정 페이지를 추가할 수 있다. 또한 라이선스나 설치항목 등 설치 과정에 필요 없는 부분은 과감히 삭제해도 문제가 없다. 가능하면 사용자의 편의를 위해 설치 디렉터리 설정 페이지 정도는 넣어 주는 것이 좋을 것 같다.

환영 페이지 (MUI_PAGE_WELCOME)
!insertmacro MUI_PAGE_WELCOME

여기서 참고적으로 윈도우 상단과 내용에 들어가는 프로그램 이름을 지정하기 위해 Name "Product Name v0.0.2"를 지정해 줬다.
라이선스 페이지 (MUI_PAGE_LICENSE)
!insertmacro MUI_PAGE_LICENSE "License.txt"

설치항목 페이지 (MUI_PAGE_COMPONENTS)
!insertmacro MUI_PAGE_COMPONENTS

디렉터리 설정 페이지 (MUI_PAGE_DIRECTORY)
!insertmacro MUI_PAGE_DIRECTORY

설치과정 페이지 (MUI_PAGE_INSTFILES)
!insertmacro MUI_PAGE_INSTFILES

종료 페이지 (MUI_PAGE_FINISH)
!insertmacro MUI_PAGE_FINISH

그리고 .. 언어 설정

!insertmacro MUI_LANGUAGE "Korean"

설치과정 화면에서 사용할 언어를 설정해 준다.

이 부분을 설정 안할 경우 컴파일 과정에서 에러가 발생한다. 즉, 필수로 포함되어야 하는 라인이다.

그리고 추가적으로 해당 라인을 MUI 페이지 앞에 두어도 에러가 나더라 .. 따라서 MUI 페이지 이후에 입력해 주자 ~~


지금까지 NSIS를 사용하여 설치 프로그램을 만들기 위해 최소화 버전과 Modern UI를 적용하는 것을 수박 겉핥기 정도만 살펴 보았다.

다음에 또 기회가 된다면 ...

Modern UI의 각 페이지별 쓸만한 사용자 정의 설정과 언인스톨러 부분을 살펴보려 한다.


'유틸리티 > NSIS' 카테고리의 다른 글

[NSIS] 바로가기 생성 및 아이콘 변경  (0) 2016.04.04
[NSIS] 언인스톨 섹션  (1) 2016.04.01
[NSIS] Scripting Reference  (0) 2016.03.31
[NSIS] MUI 헤더 이미지 추가하기  (0) 2016.03.28
[NSIS] 스크립트 템플릿  (0) 2016.03.22