<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
		<id>https://tcatmon.com/w/index.php?action=history&amp;feed=atom&amp;title=NSIS</id>
		<title>NSIS - 편집 역사</title>
		<link rel="self" type="application/atom+xml" href="https://tcatmon.com/w/index.php?action=history&amp;feed=atom&amp;title=NSIS"/>
		<link rel="alternate" type="text/html" href="https://tcatmon.com/w/index.php?title=NSIS&amp;action=history"/>
		<updated>2026-07-18T04:10:57Z</updated>
		<subtitle>이 문서의 편집 역사</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://tcatmon.com/w/index.php?title=NSIS&amp;diff=438171&amp;oldid=prev</id>
		<title>2017년 2월 5일 (일) 13:18에 Maintenance script님의 편집</title>
		<link rel="alternate" type="text/html" href="https://tcatmon.com/w/index.php?title=NSIS&amp;diff=438171&amp;oldid=prev"/>
				<updated>2017-02-05T13:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[include(틀:프로젝트 문서,프로젝트=나무위키 컴퓨터 프로젝트)]&lt;br /&gt;
&lt;br /&gt;
[목차]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
'''N'''ullsoft '''S'''criptable '''I'''nstall '''S'''ystem&lt;br /&gt;
Windows용 오픈소스 설치(Setup) 프로그램 제작 툴 [[http://nsis.sourceforge.net/|홈페이지]]&lt;br /&gt;
&lt;br /&gt;
~~초딩들이 [[마인크래프트|모 게임]]의 모드간편설치기 제작툴로 알고 있다.~~[* 물론 NSIS를 이용해서 제작할수는 있지만, 이것도 일종의 프로그래밍 언어다. 그냥 코드말고 만드는 방법 알려달라는 초딩들도 대다수 초딩들아?[HM NIS Edit은 깔고 말하는 거니? nsis7z.dll은?  ~~그게 그건데..?~~]&lt;br /&gt;
&lt;br /&gt;
원래 [[Winamp]]를 만든 Nullsoft의 [[저스틴 프랑켈]]이 Winamp의 설치프로그램을 만들기 위해서 만든 제작툴을 2001년 [[https://github.com/NSIS-Dev|오픈소스로 공개한 것]]이 이후 여러 개발자에 의해서 업데이트 되고 있다.&lt;br /&gt;
&lt;br /&gt;
NSIS가 처음 공개된 2001년에는 인스톨 쉴드와 같은 상업적인 설치 프로그램 개발 툴만이 존재하고 있었는데, 인스톨 쉴드는 무겁다는 단점이 있었다. NSIS가 공개된 이후 수많은 상용 소프트웨어 및 오픈소스 프로젝트에서 NSIS를 사용하고 있으며, 아마도 현재 Windows 플랫폼에서 제일 많이 사용하는 설치 툴일 걸로 예상된다.&lt;br /&gt;
&lt;br /&gt;
초기 버전은 프로그램의 데이터를 설치파일로 묶기 위해서 [[Deflate]]와 [[Bzip2]]압축 알고리즘만을 사용하였지만, 2.0버전부터는 [[LZMA]]를 지원하기 시작하면서, 설치파일의 크기를 많이 줄이는데 일조하였다.&lt;br /&gt;
&lt;br /&gt;
2013년부터 공개된 3.0 버전은 유니코드를 지원하기 시작하였다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 소스 코드 ==&lt;br /&gt;
SetOutPath [경로]&lt;br /&gt;
 * 파일이 처리될 경로를 설정한다. 예를 들어, $USERPROFILE\Desktop 으로 설정하면, File 을 통한 파일 압축해제는 바탕화면으로 이루어진다.&lt;br /&gt;
File [파일명]&lt;br /&gt;
 * 설치파일 안에 파일을 넣는코드이다. SetOutPath를 통해 설정한 경로로 파일이 풀린다.&lt;br /&gt;
DetailPrint [내용]&lt;br /&gt;
 * 설치 과정 중에 [내용]을 표시시킨다.&lt;br /&gt;
RMDir /r [경로]&lt;br /&gt;
 * [경로] 자체를 지운다.&lt;br /&gt;
Delete [경로\파일]&lt;br /&gt;
 * [경로\파일]을 지운다.&lt;br /&gt;
Copyfile [경로1] [경로2]&lt;br /&gt;
 * [경로1]의 파일을 [경로2]로 옮긴다.&lt;br /&gt;
&lt;br /&gt;
=== 코드 예제 ===&lt;br /&gt;
;는 NSIS상에서와 같이 주석으로 취급함. 각 코드를 설명하는 주석은 {{{#RED 빨간색}}} 처리, 스크립트 마법사에서 자동으로 만들어진 주석은 {{{#GREEN 초록색}}} 처리&lt;br /&gt;
아래 예제는 커스텀 폼을 연결한 것이다.&lt;br /&gt;
&lt;br /&gt;
||!define PRODUCT_NAME &amp;quot;예제&amp;quot;&lt;br /&gt;
!define PRODUCT_VERSION &amp;quot;1&amp;quot;&lt;br /&gt;
!define PRODUCT_PUBLISHER &amp;quot;제작자&amp;quot;&lt;br /&gt;
!define PRODUCT_WEB_SITE &amp;quot;제작자 웹사이트&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SetCompressor lzma&lt;br /&gt;
&lt;br /&gt;
{{{#GREEN ; MUI 1.67 compatible ------}}}&lt;br /&gt;
!include &amp;quot;MUI.nsh&amp;quot;&lt;br /&gt;
!include &amp;quot;LogicLib.nsh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{{#GREEN ; MUI Settings}}}&lt;br /&gt;
!define MUI_ABORTWARNING&lt;br /&gt;
!define MUI_ICON &amp;quot;icon.ico&amp;quot; {{{#RED ;icon.ico를 아이콘으로 설정한다.}}}&lt;br /&gt;
BrandingText &amp;quot;텍스트&amp;quot; {{{#RED ;&amp;quot;텍스트&amp;quot;를 하단에 표기한다.}}}&lt;br /&gt;
&lt;br /&gt;
!define MUI_WELCOMEFINISHPAGE_BITMAP &amp;quot;File.bmp&amp;quot;&lt;br /&gt;
{{{#RED ;File.bmp라는 비트맵 이미지를 제일 처음 WelcomePage 사이드에 추가한다.}}}&lt;br /&gt;
{{{#GREEN ; Welcome page}}}&lt;br /&gt;
!insertmacro MUI_PAGE_WELCOME&lt;br /&gt;
!define MUI_PAGE_HEADER_TEXT &amp;quot;텍스트&amp;quot; {{{#RED ;헤더 텍스트}}}&lt;br /&gt;
!define MUI_PAGE_HEADER_SUBTEXT &amp;quot;텍스트&amp;quot; {{{#RED ;서브헤더 텍스트}}}&lt;br /&gt;
{{{#GREEN ; License page}}}&lt;br /&gt;
!insertmacro MUI_PAGE_LICENSE &amp;quot;License.txt&amp;quot; {{{#RED ;License.txt 파일을 라이선스페이지에 표시한다.}}}&lt;br /&gt;
{{{#GREEN ; Directory page}}}&lt;br /&gt;
!insertmacro MUI_PAGE_DIRECTORY {{{#RED ;설치 경로를 설정하는 페이지.}}}&lt;br /&gt;
{{{#GREEN ; Install Setting page}}}&lt;br /&gt;
Page Custom Form {{{#RED ;적용한 커스텀 폼을 이용한다.}}}&lt;br /&gt;
{{{#GREEN ; Instfiles page}}}&lt;br /&gt;
!insertmacro MUI_PAGE_INSTFILES {{{#RED ;파일을 설치한다.}}}&lt;br /&gt;
{{{#GREEN ; Finish page}}}&lt;br /&gt;
!insertmacro MUI_PAGE_FINISH {{{#RED ;완료되고 난 다음 표기되는 마지막 페이지}}}&lt;br /&gt;
&lt;br /&gt;
{{{#GREEN ; Language files}}}&lt;br /&gt;
!insertmacro MUI_LANGUAGE &amp;quot;Korean&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{{#GREEN ; Reserve files}}}&lt;br /&gt;
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS&lt;br /&gt;
&lt;br /&gt;
{{{#GREEN ; MUI end ------}}}&lt;br /&gt;
&lt;br /&gt;
Var 'var' {{{#RED ;함수 var를 추가한다.}}}&lt;br /&gt;
&lt;br /&gt;
ReserveFile &amp;quot;Form.ini&amp;quot; {{{#RED ;Form.ini 파일을 연동한다. 이때 ini파일은 커스텀 페이지.}}}&lt;br /&gt;
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS&lt;br /&gt;
&lt;br /&gt;
Function .onInit&lt;br /&gt;
!insertmacro MUI_INSTALLOPTIONS_EXTRACT &amp;quot;Form.ini&amp;quot; {{{#RED ;커스텀 페이지를 임시로 압축을 해제한다.}}}&lt;br /&gt;
FunctionEnd&lt;br /&gt;
&lt;br /&gt;
Function Form&lt;br /&gt;
!insertmacro MUI_INSTALLOPTIONS_DISPLAY_RETURN &amp;quot;Form.ini&amp;quot; {{{#RED ;커스텀 페이지를 반환한다.}}}&lt;br /&gt;
FunctionEnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Name &amp;quot;파일의 이름&amp;quot;&lt;br /&gt;
OutFile &amp;quot;출력될 파일의 이름.exe&amp;quot;&lt;br /&gt;
InstallDir &amp;quot;경로&amp;quot; {{{#RED ;이때 환경변수 이용이 가능하며, 윈도우와 달리 $를 붙인다. NSIS만의 환경변수도 존재하는듯 하다.}}}&lt;br /&gt;
ShowInstDetails show {{{#RED ;설치 과정중 자세히 보여줄 것인지를 결정한다. show와 hide, nevershow가 있다.}}}&lt;br /&gt;
&lt;br /&gt;
  SetOverwrite ifnewer&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;MainSection&amp;quot; SEC01&lt;br /&gt;
  SetOutPath &amp;quot;$INSTDIR/Deleteme&amp;quot; {{{#RED ;경로를 설정한다.}}}&lt;br /&gt;
  File &amp;quot;javakill.cmd&amp;quot; {{{#RED ;파일을 스크립트에 넣고 &amp;quot;경로1&amp;quot;에 푼다.}}}&lt;br /&gt;
  DetailPrint &amp;quot;다음 프로세스를 정지합니다: Javaw.exe&amp;quot; {{{#RED ;&amp;quot;다음 프로세스를 정지합니다: Javaw.exe&amp;quot;를 설치 과정중에 표시한다.}}}&lt;br /&gt;
  nsExec::Exec &amp;quot;javakill.cmd&amp;quot; {{{#RED ;&amp;quot;경로1&amp;quot;에 있는 &amp;quot;javakill.cmd&amp;quot;를 실행한다.}}}&lt;br /&gt;
  goto Step1 ;Step1으로 간다. 배치파일과 비슷한 개념.&lt;br /&gt;
Step1:&lt;br /&gt;
!insertmacro MUI_INSTALLOPTIONS_READ &amp;quot;$Var&amp;quot; &amp;quot;Form.ini&amp;quot; &amp;quot;Field 1&amp;quot; &amp;quot;State&amp;quot; ;&amp;quot;Form.ini&amp;quot;의 1번 필드의 값을 Var함수로 가져온다.&lt;br /&gt;
StrCmp $Var &amp;quot;1&amp;quot; CheckA1 CheckA2 {{{#RED ;C/C++의 StrCmp와 같은 개념}}}&lt;br /&gt;
CheckA1:&lt;br /&gt;
  RMDir /r &amp;quot;$INSTDIR/Deleteme&amp;quot; {{{#RED ;폴더 및 하위 폴더와 파일을 제거한다.}}}&lt;br /&gt;
  goto Step2&lt;br /&gt;
CheckA2:&lt;br /&gt;
  goto Step2&lt;br /&gt;
Step2:&lt;br /&gt;
  SetOutPath &amp;quot;$INSTDIR/Temp&amp;quot;&lt;br /&gt;
  DetailPrint &amp;quot;파일 다운로드중...&amp;quot;&lt;br /&gt;
  Nsisdl::download &amp;quot;파일 직접링크&amp;quot; &amp;quot;다운로드될 파일의 이름&amp;quot; {{{#RED ;파일을 다운로드한다.}}}&lt;br /&gt;
  DetailPrint &amp;quot;적용중...&amp;quot;&lt;br /&gt;
  File &amp;quot;7za.exe&amp;quot; {{{#RED ;7zip 라이브러리 파일(7za.exe)을 컴퓨터에 추가한다.}}}&lt;br /&gt;
  File &amp;quot;Extract.cmd&amp;quot; {{{#RED ;&amp;quot;Extract.cmd&amp;quot;파일을 컴퓨터에 추가한다.}}}&lt;br /&gt;
  nsExec::Exec &amp;quot;Extract.cmd&amp;quot; {{{#RED ;&amp;quot;Extract.cmd&amp;quot;파일을 실행한다.}}}&lt;br /&gt;
  DetailPrint &amp;quot;임시파일을 삭제하는중....&amp;quot;&lt;br /&gt;
  RMDir /r &amp;quot;$INSTDIR/Temp&amp;quot; {{{#RED ;여기서는 임시파일이 제거된다.}}}&lt;br /&gt;
  DetailPrint &amp;quot;완료&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&lt;br /&gt;
Section -Post&lt;br /&gt;
SectionEnd||&lt;br /&gt;
&lt;br /&gt;
== 플러그인 ==&lt;br /&gt;
NSIS는 다양한 플러그인을 지원한다. 자체적으로 포함된 플러그인도 있으며 나머지 플러그인은 [[http://nsis.sourceforge.net/Category:Plugins|여기서]] 확인할수 있다.&lt;br /&gt;
기본적으로 플러그인용 코드는 플러그인 이름::명령어 로 설정된다.&lt;br /&gt;
&lt;br /&gt;
=== 기본 플러그인 ===&lt;br /&gt;
NSIS를 설치할 때 기본적으로 제공되는 플러그인들이다.&lt;br /&gt;
&lt;br /&gt;
nsExec&lt;br /&gt;
* nsExec::Exec [경로] 로 해당 경로의 파일을 실행시킬수 있다.&lt;br /&gt;
&lt;br /&gt;
NSISdl&lt;br /&gt;
* NSISdl::download [다운로드 링크] 로 해당 링크와 연결된 파일을 받을수 있다.&lt;br /&gt;
&lt;br /&gt;
advsplash&lt;br /&gt;
* 설치기 시작 함수(.onInit)에 넣으면 설치기를 실행할때 스플래시 이미지가 뜬다.&lt;br /&gt;
&lt;br /&gt;
[[분류: 프로그래밍 언어]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>	</entry>

	</feed>