헬마입니다.  

 오늘 우편함을 확인해보니 NSIS 에 관한 질문 우편이 왔더군요.

 제목이 단지 "헬마님" 이길래 처음에는 흔한 스팸인줄 알았습니다.

 최근들어 이상하게 스팸이 자주와서 곤란을 겪고 있거든요..

 그래서 내용을 보기도 전에 삭제키를 누르려다가 그래도 스팸 내용이나 한번 봐보자 하다가 스팸이 아니라는것을 알았습니다. ^^

 질문 내용을 보니 처음에 NSIS 를 익히시는 많은 분들의 고민이 그대로 있는거 같아서 이렇게 게시물로 올려보게되었습니다.

 -----

 NSIS 는 설치관리자입니다. 설치관리자의 가장 주된 역할은 간단히 말하면 파일을 가지고 있다가 다른 컴퓨터에 파일을 설치하는 것 이라고 할 수 있죠.

 그런데, NSIS 명령들을 쭉 살펴봐도 겉보기에는 파일을 가져오는 명령은 있는데 설치하는 명령은 보이질 않습니다.

 난감하지요. ^^ 그거 옆구리만 긁적 긁적 긁게되는데요.

 핵심은 딱 2개의 명령어로 이루어져 있습니다.

 하나는 SetOutPath 와 또 하나는 File 명령어 입니다.
 
 먼저는 SetOutPath 는 가지고 있는 파일들이 설치될 장소를 지정합니다.
 설치할 장소가 변경될 때마다 새로 지정해야하는 것은 당연하겠죠? ^^

 이제 제일 중요한 File 명령입니다.
 겉보기에는 이는 단지 설치관리자 제작 컴퓨터에서 파일을 가져오기만 하는 명령어로 보입니다.
 하지만, 이 명령어는 2가지 역할을 합니다.
 첫째, 컴파일시에는 설치관리자로 파일을 가져오는 역할 입니다.
 둘째, 스크립트가 실행될 때는 지정된 파일을 SetOutPath 에 지정된 폴더로 설치하는 역할입니다.

 이렇게 2가지 명령어를 이용하여 파일을 설치하는 작업을 할 수 있습니다.

[my folder]
\->Release
\--->Windows
\------>aaa.dll
\--->Program
\------>main.exe
\->Source

 우편으로 질문이 왔던 위와 같은 상황이라면, 아래와 같이 코드를 작성하시면 됩니다.


	Name 'NSIS_EX_TEST'
	OutFile 'NSIS_EX_TEST.EXE'
	InstallDir '$PROGRAMFILES\MyProgram'

	Section 'Ex_Test'
		SetOutPath $WINDIR
		File 'C:\\my Folder\\Release\\Windows\\aaa.dll'
		
		SetOutPath $INSTDIR
		File 'C:\\my Folder\\Release\\Program\\main.exe'
	SectionEnd

댓글을 달아 주세요