티스토리 뷰

스크립트 기반의 윈도 설치파일(installer) 제작도구인 NSIS


간단히 설명을 하자면,

스크립트 기반의 윈도 설치파일(installer) 제작도구인 NSIS입니다.
NSIS는 Winamp, DivX, eMule과 같은 우리에게 친숙한 프로그램들의 설치파일에도 사용되었으며 설치파일 제작 도구로서 많은 장점을 가지고 있습니다.

NSIS는 여타 다른 설치파일 제작도구들이 설치파일을 컴파일하는 과정에서 추가로 발생되는 오버헤드로 인한 파일크기 증가 정도가 매우 작으며, 40개국의 언어와 모든 버전의 윈도와 호환되고 ZLib, BZip2, LZMAdhk와 같은 다양한 압축방식을 제공하므로 폭넓은 호환성 및 효율성을 제공합니다.

또한 플러그인을 통해 C, C++, Delphi등의 다른 언어로 작성되는 코드와 호환이 가능하며 기본적으로 사용하는 NSIS 스크립트의 경우 메모장과 같은 기본적인 텍스트 편집툴을 통해서도 읽고 편집할 수 있습니다.

제작자만의 메시지나 알림, 설명등을 설치파일내에 부가할 수 있으며 제품로고와 같은 특유의 인터페이스 디자인을 부가할 수 있을 뿐 아니라 하나의 설치파일에서 다양한 옵션의 설치 프로젝트를 설계하거나 Full Version, Lite Version과 같은 설치 레벨도 구성할 수 있습니다.

한편 기존의 압축파일을 exe확장자의 SFX로 변환할 수 있는 기능도 제공하고 있습니다.

프로그램을 설치하고 나면 컴파일러인 MakeNSISW를 바로 실행할 수 있지만 처음 사용하는 사용자를 위해 NSIS Menu라는 별도의 실행파일을 제공하고 있으며, NSIS Menu를 실행하면 컴파일러나 Zip2Exe를 바로 실행할 수 있는 링크는 물론 NSIS를 업데이트 할 수 있는 기능, 각종 매뉴얼 및
설명서 링크, 여러 관련 파일들이 위치하고 있는 폴더링크와 같은 NSIS 조작에 필요한 다양한 링크를 제공하고 있습니다.


참고 사이트 : http://www.kipple.pe.kr/doc/nsis/

                   http://jgh0721.egloos.com/l3

                   http://tong.nate.com/hellmaster  or http://jgh0721.egloos.com/2379048

  • ===============================================================================

    [MSIS 스크립트 예제]

    ; MUI 템플릿 사용을 위한 헤더 파일

    !include "MUI.nsh"


    ; 소프트웨어명 (설치파일의 타이틀로 사용됨)

    Name "AnyProg Ver1.0"


    ; 설치 프로그램명 (출력 파일)

    OutFile "Setup.exe"


    ; 설치 디렉토리

    InstallDir "$PROGRAMFILES\AnyProg"


    ; 셋업 프로그램 아이콘 설정 (반드시 두 파일이 같은 형식일 것)

    !define MUI_ICON "win-install.ico"
    !define MUI_UNICON "win-uninstall.ico"


    ; MUI_WELCOME Page 설정

    !define MUI_WELCOMEPAGE_TEXT \
    "이 설치 프로그램은 컴퓨터에 AnyProg Ver 1.0을 \r\n\
    설치합니다.\r\n\r\n\
    AnyProg Ver 1.0.1은 임의의 프로그램 이름입니다."


    ; MUI_PAGE_FINISH Page 설정

    ;!define MUI_FINISHPAGE_NOAUTOCLOSE
    !define MUI_FINISHPAGE_RUN "$INSTDIR\AnyProg.exe"
    !define MUI_FINISHPAGE_RUN_TEXT "AnyProg Ver 1.0을 실행합니다."


    ; MUI_PAGE_DIRECTORY Page 설정

    !define MUI_DIRECTORYPAGE_TEXT_TOP \
    "AnyProg Ver 1.0.1을 설치할 디렉토리를 선택하세요."


    ; MUI 설치 다이얼로그들 정의

    !define MUI_ABORTWARNING
    !insertmacro MUI_PAGE_WELCOME
    !insertmacro MUI_PAGE_DIRECTORY
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_PAGE_FINISH

    !insertmacro MUI_UNPAGE_WELCOME
    !insertmacro MUI_UNPAGE_CONFIRM
    !insertmacro MUI_UNPAGE_INSTFILES
    !insertmacro MUI_UNPAGE_FINISH


    ; 사용언어

    !insertmacro MUI_LANGUAGE "Korean"


     

    ; ##############################################################################
    ; Install Section (기본 모드)
    ; ##############################################################################


     

    Section ""


    ; 설치 경로 설정

    SetOutPath $INSTDIR\


    ; 설치 경로에 설치될 파일들 지정

    File AnyProg.exe
    File ReadMe.txt


    ; 시스템 디렉토리 설정 (Visual C++ 런타임 라이브러리)

    SetOutPath "$SYSDIR\"


    ; 시스템 디렉토리에 설치될 파일들 지정

    File MSVCRTD.DLL


    ; Uninstaller 생성

    WriteUninstaller $INSTDIR\Uninstall.exe


    ; 시작 프로그램의 단축 아이콘 생성

    CreateDirectory "$SMPROGRAMS\AnyProg"

    CreateShortCut \
    "$SMPROGRAMS\AnyProg\AnyProg.lnk" \
    "$INSTDIR\AnyProg.exe"

    CreateShortCut \
    "$SMPROGRAMS\AnyProg\AnyProg 제거.lnk" \
    "$INSTDIR\Uninstall.exe"


    ; 컴퓨터 시작시 프로그램이 자동 시작되도록 추가

    WriteRegStr HKLM \
    "Software\Microsoft\Windows\CurrentVersion\Run" \
    "AnyProg" \
    "$INSTDIR\AnyProg.exe"


    ; 프로그램 추가/삭제 항에 Uninstaller 추가

    WriteRegStr HKLM \
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\AnyProg" \
    "DisplayName" \
    "AnyProg (remove only)"

    WriteRegStr HKLM \
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\AnyProg" \
    "UninstallString" \
    "$INSTDIR\Uninstall.exe"


     

    SectionEnd


     

    ; ##############################################################################
    ; Uninstall Section (제거 모드)
    ; ##############################################################################


     

    Section "Uninstall"


    ; 설치 디렉토리 삭제

    Delete "$INSTDIR\*.*"
    RMDir $INSTDIR


    ; 시작메뉴 항목들 삭제

    Delete "$SMPROGRAMS\AnyProg\AnyProg.lnk"
    Delete "$SMPROGRAMS\AnyProg\AnyProg 제거.lnk"
    RMDIR "$SMPROGRAMS\AnyProg"


    ; 레지스트리 정보들 삭제

    DeleteRegKey HKEY_CURRENT_USER \
    "SOFTWARE\My Applications"

    DeleteRegKey HKEY_LOCAL_MACHINE \
    "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AnyProg"


     

    SectionEnd


  • 공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    «   2024/04   »
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30
    글 보관함