NSIS

**NSIS**(Nullsoft Scriptable Install System, 널소프트 스크립터블 인스톨 시스템)는 스크립트 기반으로 동작하는 윈도우용 설치 시스템으로, 윈앰프를 만든 것으로 알려져 있는 널소프트가 지원하는 가벼운 설치 시스템이다. NSIS는 인스톨실드와 같은 상용 사유 제품들을 널리 대체하면서 인기를 끌고 있다.

NSIS는 주로 zlib 라이선스인 자유 소프트웨어 라이선스와 결합한 자유 소프트웨어이다.

## 역사
NSIS는 윈앰프를 배포할 목적으로 만들어졌다. 이 시스템은 이전 널소프트 제품인 PiMP (플러그인 미니 패키저)에 기반을 두고 있으며 슈퍼PiMP(SuperPiMP)라고도 부른다. 버전 2.0a0 이후로 제품은 소스포지로 이동되면서 널소프트 외부 개발자들까지도 작업에 참가할 수 있게 되었다. 그러다가 약 2년 뒤에 NSIS 2.0이 출시되었다.

NSIS 버전 1은 여러 방면에서 윈도우 인스톨러의 기본 형태와 비슷하다. 그러나 스크립트를 작성하기 더 쉽고 더 많은 압축 포맷을 지원한다는 점에서 차이가 있다. NSIS 버전 2부터는 새로운 스트림라인 GUI를 제공하며 LZMA 압축, 다국어를 지원하며 플러그인 시스템을 쉽게 이용할 수 있게 되었다.

## 개념
### 스크립트
NSIS 컴파일러 시스템 *makensis*는 다음과 같은 예제의 스크립트를 컴파일하여 실행 가능한 설치 프로그램을 만든다. 이 스크립트의 각 줄은 하나의 명령어를 담고 있다.

```nsis
# 스크립트 예제
Name "예제1"
OutFile "예제1.exe"
InstallDir "$PROGRAMFILES\예제1"
Page Directory
Page InstFiles
Section
  SetOutPath $INSTDIR
  File ..\makensis.exe
SectionEnd
```


### 현대의 사용자 인터페이스
섬네일|300px|NSIS 2.37 메뉴
오른쪽|섬네일|300px|NSIS 1.98
버전 2.0부터 선택 가능한 스트림라인 GUI "모던 UI"(MUI)가 새롭게 도입되었다. 이 MUI는 마법사같은 인터페이스를 갖추고 있다. 환경 페이지, 마침 페이지, 언어 선택 대화 상자, 구성 요소 기술 영역, 또 이전 사용자 인터페이스에 견주어 더 나은 사용자 지정 옵션을 지원한다.

```nsis
# 모던 UI 스크립트 예제
!include MUI.nsh
Name "예제 2"
OutFile "예제2.exe"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "license.rtf"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "영어 (English)"
!insertmacro MUI_LANGUAGE "독일어 (German)"
!insertmacro MUI_LANGUAGE "프랑스어 (French)"
Section "Extract makensis"
  SetOutPath $INSTDIR
  File ..\makensis.exe
SectionEnd
```


NSIS 버전 2.30 (2007년 8월 25일 출시)부터는 이 사용자 인터페이스의 새로운 (베타) 버전을 이용할 수 있다. 이를 **모던 UI 2**(MUI2)라고 하며 기존의 모던 UI에 있던 기능들이 강화된 것이다. 오래된 MUI와 달리 이 버전은 오래된 방식의 InstallOptions .ini 파일이 아닌 nsDialogs에 기반을 둔다.

버전 2.34 (2007년 12월 24일)부터 MUI2는 이 시스템의 많은 이용에 대비하여 모든 NSIS 패키지에 포함되었다. 모든 예제가 it.Modern UI 2 문서로 전환되었다.

### 플러그인
NSIS는 설치 프로그램과 통신할 수 있는 플러그인으로 확장할 수 있다. 플러그인은 C, C++, 델파이로 작성할 수 있으며 설치 작업을 수행하거나 설치 프로그램 인터페이스를 확장하는 데 사용할 수도 있다. NSIS 코드에서 줄 하나만 추가하면 플러그인을 호출할 수 있다.

여러 플러그인들이 NSIS 패키지에 포함되어 있으며 이들을 이용하면 설치 프로그램이 스플래시 화면, 사용자 지정 페이지, 배경 위의 그림을 보여줄 수 있고 웹사이트로부터 파일을 내려받거나 연산 기능을 수행하거나 파일을 패치하는 등의 일도 할 수 있다.

그 밖의 플러그인들은 ZipDLL, 파이썬 플러그인을 비롯하여 온라인에서 내려받을 수 있다.

## 기능
* 매우 작은 오버헤드 (34 KB)
* zlib, bzip2, LZMA 압축
* 스크립트 기반
* 다국어
* 플러그인 지원
* 스크립트 전처리
* 그 밖의 기능...

## NSIS를 이용하는 제품

그 밖의 항목은 NSIS WWW 사이트에 나열되어 있다.

## 그래픽 인터페이스
NSIS 프로젝트는 (.nsi 확장자의) 간단히 문서 파일을 편집하여 구성할 수 있다. 그러나 다음과 같은 외부 소프트웨어를 이용하여 편집할 수도 있다:
* EclipseNSIS은 이클립스 플랫폼을 위한 모듈이다. NSIS 스크립트의 편집, 컴파일, 검증을 도와준다.
* HM NIS Edit는 사용자 지정 C++/델파이 플러그인을 지원하는 프리웨어 NSIS 편집기이다.
* Venis는 수많은 기능을 제공하는 프리웨어 편집기이다.

## 설치 프로그램 인터페이스
모던 UI를 대체하거나 확장하는 일부 프로젝트들은 지난 몇 년에 걸쳐 시작되고 있다.
ExperienceUI, UltraModernUI와 같은 인터페이스들은 인스톨실드 인터페이스와 비슷한 스킨을 입혀서 완전히 설치 프로그램의 스타일을 변경한다. InstallSpiderUI와 같은 그 밖의 인터페이스들은 모던 UI와 같은 수준의 기능을 유지하면서도 시각적인 측면에 더 최소화된 접근을 제공하는 것이 목적이다.

모던 UI 2 인터페이스에 기반한 프로젝트도 몇 가지 있는데, 기능이 더 강화되었으며 설치 프로그램의 스킨을 완전히 다시 입힐 수도 있다: 그래피컬 인스톨러 (Graphical Installer) (상용 목적으로 판매되지만 개인은 무료로 이용할 수 있다). 주가 되는 장점은 설치 프로그램에 기반한 표준 MUI와 MUI2를 사용자가 지정한 그래픽(배경, 버튼, 체크 상자)의 스킨을 입힌 설치 프로그램으로 쉽게 변환할 수 있다는 것이다. 더 새로운 버전에는 단지 몇 초만에 완전한 스크립트를 만들 수 있는 마법사를 제공하는 HM NIS 편집을 위한 플러그인을 포함하기도 한다. 모든 기능을 보려면 NSIS의 그래피컬 인스톨러 페이지를 참고하라.

## 제공 목적을 위한 설치 프로그램
제공 목적을 위한 설치 프로그램은 PE 포맷으로 되어 있으며 설치 파일들이 포함된 설치 프로그램을 가리킨다. 이는 NSIS 설치 프로그램에 34 KB 정도의 오버헤드가 있다. 또, 설치 스크립트가 실행 코드로 컴파일된다. 설치 스크립트가 컴파일되면 스크립트는 이진 파일을 역공학하지 않는 한 살펴보지 못한다.

이 압축 형태의 파일은 7-Zip이나 토탈 커맨더 플러그인InstallExplorer, 전처리기를 이용하여 압축을 풀 수 있다.

이 압축 파일은 다음과 같은 폴더를 포함하고 있다:
* **$PLUGINSDIR** : 설치 루틴 플러그인
* **$INSTDIR** : 설치하는 동안에 쓰이는 파일
* **$_OUTDIR** : 설치할 파일.

## 유니코드 지원
NSIS의 공식판은 3.0버전부터 유니코드를 정식 지원하고, 이전 버전의 경우에는 유니코드 지원을 포함하지 않지만 플러그인을 이용하면 일부 파일을 다른 인코딩으로 변환할 수 있다.

2.xx버전대의 경우 짐 파크(Jim Park)는 완전한 유니코드 지원을 포함하는 NSIS의 변종을 만들어 유지, 제공하고 있다.

짐 파크의 유니코드 변종을 이용하고 있는 프로젝트들은 다음과 같다:
* 구글 (피카사)
* OpenOffice.org (윈도)
* 모질라 (파이어폭스, 모질라 선더버드)
* 파일질라
* 윈앰프
* flickr
* PortableApps.com

## 같이 보기
*  소프트웨어 설치 프로그램 목록

## 각주

## 외부 링크

*  
*  NSIS 소스포지 프로젝트 페이지
*  이 달의 SourceForge.net 프로젝트 - 2006년 1월

분류:자유 소프트웨어
분류:윈도우 소프트웨어
분류:C로 작성된 자유 소프트웨어
분류:C++로 작성된 자유 소프트웨어
분류:Zlib 라이선스 소프트웨어