NSIS
| 파일:Nullsoft Scriptable Install System icon.png | |
| 섬네일을 만드는 중 오류 발생: NSIS 설치 프로그램 | |
| 개발자 | 널소프트 |
|---|---|
| 안정화 버전 | 3.09 release note
/ 2023년 7월 1일 |
| 저장소 |
|
| 프로그래밍 언어 | C, C++ |
| 엔진 | |
| 운영 체제 | 윈도우, POSIX |
| 종류 | 소프트웨어 개발 도구 |
| 라이선스 | zlib 라이선스 |
| 웹사이트 | nsis.sourceforge.net |
NSIS(Nullsoft Scriptable Install System, 널소프트 스크립터블 인스톨 시스템)는 스크립트 기반으로 동작하는 윈도우용 설치 시스템으로, 윈앰프를 만든 것으로 알려져 있는 널소프트가 지원하는 가벼운 설치 시스템이다. NSIS는 인스톨실드와 같은 상용 사유 제품들을 널리 대체하면서 인기를 끌고 있다.
NSIS는 주로 zlib 라이선스인 자유 소프트웨어 라이선스와 결합한 자유 소프트웨어이다.[1]
역사
NSIS는 윈앰프를 배포할 목적으로 만들어졌다. 이 시스템은 이전 널소프트 제품인 PiMP (플러그인 미니 패키저)에 기반을 두고 있으며 슈퍼PiMP(SuperPiMP)라고도 부른다. 버전 2.0a0 이후로 제품은 소스포지로 이동되면서 널소프트 외부 개발자들까지도 작업에 참가할 수 있게 되었다. 그러다가 약 2년 뒤에 NSIS 2.0이 출시되었다.
NSIS 버전 1은 여러 방면에서 윈도우 인스톨러의 기본 형태와 비슷하다. 그러나 스크립트를 작성하기 더 쉽고 더 많은 압축 포맷을 지원한다는 점에서 차이가 있다. NSIS 버전 2부터는 새로운 스트림라인 GUI를 제공하며 LZMA 압축, 다국어를 지원하며 플러그인 시스템을 쉽게 이용할 수 있게 되었다.
개념
스크립트
NSIS 컴파일러 시스템 makensis는 다음과 같은 예제의 스크립트를 컴파일하여 실행 가능한 설치 프로그램을 만든다. 이 스크립트의 각 줄은 하나의 명령어를 담고 있다.
# 스크립트 예제
Name "예제1"
OutFile "예제1.exe"
InstallDir "$PROGRAMFILES\예제1"
Page Directory
Page InstFiles
Section
SetOutPath $INSTDIR
File ..\makensis.exe
SectionEnd
현대의 사용자 인터페이스
버전 2.0부터 선택 가능한 스트림라인 GUI "모던 UI"(MUI)가 새롭게 도입되었다. 이 MUI는 마법사같은 인터페이스를 갖추고 있다. 환경 페이지, 마침 페이지, 언어 선택 대화 상자, 구성 요소 기술 영역, 또 이전 사용자 인터페이스에 견주어 더 나은 사용자 지정 옵션을 지원한다.
# 모던 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, 파이썬 플러그인을 비롯하여 온라인에서 내려받을 수 있다.
기능
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 정도의 오버헤드가 있다.[3] 또, 설치 스크립트가 실행 코드로 컴파일된다. 설치 스크립트가 컴파일되면 스크립트는 이진 파일을 역공학하지 않는 한 살펴보지 못한다.
이 압축 형태의 파일은 7-Zip이나 토탈 커맨더 플러그인InstallExplorer, 전처리기를 이용하여 압축을 풀 수 있다.
이 압축 파일은 다음과 같은 폴더를 포함하고 있다:
- $PLUGINSDIR : 설치 루틴 플러그인
- $INSTDIR : 설치하는 동안에 쓰이는 파일
- $_OUTDIR : 설치할 파일.
유니코드 지원
NSIS의 공식판은 3.0버전부터 유니코드를 정식 지원하고, 이전 버전의 경우에는 유니코드 지원을 포함하지 않지만 플러그인을 이용하면 일부 파일을 다른 인코딩으로 변환할 수 있다.[4]
2.xx버전대의 경우 짐 파크(Jim Park)는 완전한 유니코드 지원을 포함하는 NSIS의 변종을 만들어 유지, 제공하고 있다.[5]
짐 파크의 유니코드 변종을 이용하고 있는 프로젝트들은 다음과 같다[6]:
- 구글 (피카사)
- OpenOffice.org (윈도)
- 모질라 (파이어폭스, 모질라 선더버드)
- 파일질라
- 윈앰프
- flickr
- PortableApps.com
같이 보기
- (영어) 소프트웨어 설치 프로그램 목록
각주
- ↑ “NSIS licence page” (영어).
- ↑ Features - NSIS
- ↑ Features, NSIS
- ↑ Unicode plug-in - NSIS
- ↑ Unicode NSIS 프로젝트 페이지
- ↑ “Unicode NSIS Project Users”. 2011년 7월 16일에 원본 문서에서 보존된 문서. 2011년 4월 23일에 확인함.
외부 링크
- (영어) 모듈:Official_website 90번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
- (영어) NSIS 소스포지 프로젝트 페이지
- (영어) 이 달의 SourceForge.net 프로젝트 - 2006년 1월
- 스크립트 오류가 있는 문서
- CS1 - 영어 인용 (en)
- 잘못된 파일 링크가 포함된 문서
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 자유 소프트웨어
- 윈도우 소프트웨어
- C로 작성된 자유 소프트웨어
- C++로 작성된 자유 소프트웨어
- Zlib 라이선스 소프트웨어