etc

배포툴 NSIS

적외선 2011. 1. 12. 14:49

일단 프로그램을 만들었는데 배포를 하라면 어떻게 할까요.
그냥 압축해서 줄수도 있고 배포툴을 사용할수도 있겠지요.

배포툴이라니까 옛날에는 InstallShield 라는 것이 VS6 에 포함되서 들어와서 좋았는데
그 이후버전부터는 유료로 전환을 했지요.
뭐 그렇긴 해도 아직까진 매우 쓸만합니다.

하지만 돈도 없는 가난한 개발자가 300만원이 넘는 저걸 일일이 살수도 없는 일.
그래서 찾다보니 가장 먼저 눈에 띄는것이 InstallFactory 라는 프로그램이지요.
http://file.naver.com/pc/view.html?fnum=28516&cat=34

이것도 매우 좋았습니다.
장점으론 친절한 GUI 화면에 샘플까지 있어서 한번씩 해보면 다 이해가 간다는...
단지 다른 설치 프로그램으로 설치된 곳에 중복 설치시 구분을 못해준다는 것과
무인 설치로 만들지 못한다는 단점이 있지만 뭐 단점이라고도 할수 없지요.

이제 NSIS 를 봤습니다.
http://nsis.sourceforge.net/

친절합니다. 한쪽에 최종 버전을 바로 다운로드 가능하게 링크도 되어있지요.
설치까지 깔끔하게 되고 바탕화면에 아이콘 생성되지요.
실행을 했습니다.



아 이런 화면이 나오는군요.
아무래도 초보이다보니 Documentation 의 NSIS UsersManual 을 클릭했습니다.
.......
뭔가요. 이 원론수준의 메뉴얼은.
이걸로는 도움이 되지 않습니다. 2번째 튜토리얼을 봐도 뭘 어떻게 해야할지 감이 안잡혔습니다.

한참을 멍하게 있다가 그래 예제를 한번 보자! 하면서 Example scripts 를 봤습니다.
......
예제는 정말 풍부하게 있습니다. 단지 구조를 모르니 전체적인 이해가 안될뿐.
C 라면 main(){ } 도 모르고 시작하는 셈이지요.

검색을 했습니다. 아 뭔가 툴이 보입니다.

HM NIS EDIT: A Free NSIS Editor/IDE

라고 하는군요.
공짜랍니다. 역시 공짜는 일단 보고 가야겠지요.
http://hmne.sourceforge.net/

홈페이지에 들어가서 읽어보니, 오오. 한국어까지 지원을 합니다.
쭈욱 내려보니 인스톨 파일이 있군요.
다운로드 받아서 설치를 했습니다.

바탕화면에 아이콘이 생기고 실행하니 스크립트 작성 마법사가 보이는군요!

이제 만들어 볼까요.




마법사 버튼 클릭!



아. 한글입니다! 다음을 눌러 봅시다.



첫 화면은 프로그램 정보 입력 화면이 나오는군요.
알맞게 입력을 해줍시다.

그러고 다음.



설치파일에 들어갈 아이콘과 최종적으로 나올 설치파일 이름/ 인스톨러의 언어선택/
설치화면(Classic/Modern/사용안함?) / 압축방식(zlib,bzip2,LZMA,사용안함) 을
선택하는 화면이 나왔습니다.
일단 적당히 맞춰볼까요. 아이콘은 NotePad.exe 를 선택해주고 파일명 적당히 수정,
언어는 기본 Korean 으로 되어있군요.
나머진 놔두고 다음.



이제 설치할 목표 폴더를 선택하는 곳이 나왔네요.
적당히 맞춰주시고 다음.



이제 설치할 파일을 선택하게 나왔습니다.

왼쪽은 설치모드가 여러개일때 각각 이름을 정해주는 구문이고
오른쪽은 그 설치모드에서 설치될 파일들을 선택하는 곳이지요.

트리 모양의 아이콘을 선택하면 폴더채로 선택이 가능합니다.

단지 단점이라면 비어있는 폴더는 선택을 못하더군요.
이건 나중에 스크립트에서 수정하면 됩니다.

아래쪽의 체크박스를 선택하면 설치모드 선택화면이 뜹니다.


파일 선택을 눌렀을때 화면.

폴더 선택을 눌렀을때 화면

적당히 설정해주고 다음을 눌러줍시다.



이제 시작메뉴 설정하는 것과 바로가기를 만드는 구문이 나옵니다.
사용하면서 발견한 버그는 여기서 EXE 파일이 여러개일경우 제일 첫번째 EXE파일을
메인으로 선택해 놓는다는 것이 있으니 이건 나중에 스크립트가 만들어지면 수정을 해야합니다.

이건 테스트이니 그냥 적당히 설정후 다음.



이제 설치가 다 끝나고 자동 실행할 파일을 설정하는 화면입니다.
뭐 설명이 필요하겠습니까.

다음을 누릅시다.



언인스톨러를 만드는 화면이 나왔네요.
이건 뭐 맘에 들게 적당히 수정만 하시고 다음을 눌러주세요.



드디어 끝났군요.
사라질지도 모르니 스크립트 저장을 체크하고 완료를 합시다.

이제 스크립트가 작성 완료가 되었습니다.
지금부터 스크립트의 기능의 일부만 설명해 보겠습니다.

; HM NIS Edit Wizard helper defines

이라고 되어있는 부분은 마법사에 의해 만들어진 구문이니 적당히 변경할때만 수정하시면 됩니다.

; MUI x.xx compatible ------

부터

; MUI end ------

사이의 구문들은 보면 이해가 다 가시겠지만 설치할때 나오는 순서 와 기본 아이콘 설정입니다.
여기서 포인트는 자기가 적당히 수정을 가할수 있다는 것이겠지요.

; License page
!insertmacro MUI_PAGE_LICENSE "path\to\licence\YourSoftwareLicence.txt"

구문은 필요없으니 앞에 ; 를 넣어 없애겠습니다.
다른 구문도 마찬가지로 앞에 ; 를 붙여버리면 해당 창이 뜨지 않습니다.

완전 무인설치 하려면

; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\NOTEPAD.EXE"
!insertmacro MUI_PAGE_FINISH

부분만 남기고  ; 를 붙여버리면 되겠지요.

이제 다음 부분은 설치하거나 지울 파일들을 설정하는 부분인데,

필요한 부분만 설명하면

InstallDir "$PROGRAMFILES\Notepad Test"

은 말그대로 설치할 폴더를 지정해 줍니다. $PROGRAMFILES 같은 것은 F1 을 눌러보시면
NSIS 도움말로 연결되어 있으니 자세한 정보를 얻을 수 있습니다.
직접 찾으시려면 NSIS 도움말 4.2 Variables 내에 있습니다.

설치하는 과정에 보면 폴더를 만드는 과정이 생략이 됩니다.

단지 복사될 폴더를 지정하는 화면만 나오지요.

  SetOutPath "$INSTDIR"

요 명령어 입니다.
이 안에 폴더 지정과 없을경우 만드는 기능까지 들어있습니다.

아까 파일 지정할때 비어있는 폴더를 지정하지 못하였는데,

  SetOutPath "$INSTDIR\dir1"

식으로 지정하면 해당 폴더가 생성됩니다.

  CreateDirectory "$INSTDIR\dir1"

도 물론 가능합니다.

  File "WINNT\NOTEPAD.EXE"

로 하면 SetOutPath 로 되어있는 폴더에 해당 파일이 복사가 되지요.

아래쪽은 Uninstall 구문인데 뭐 File 추가하면 삭제할수 있게 다른 구문과
똑같이 붙여주면 되니 크게 힘들진 않을것입니다.

컴파일을하니....

아 .EXE 파일은 아이콘 인식을 못하는군요. 따로 ico 를 만들어놔야 하겠습니다.
NSIS 기본 제공 아이콘으로 변경하고 다시 컴파일.

네 완성되었습니다.
실행하면 바로 Notepad.exe 가 지정된 폴더에 설치되고 단축아이콘도 순식간에 나타납니다.

이제 기본은 되었고 물론 고급 사용을 하려면 Example Script 를 파고 들어야 할테지만
현재로는 잘 된다는 것에 만족을.