NSIS 사용자 설명서

단일 소프트웨어 설치 프로그램

 본 문서는 NSIS Users Manual에 수록되어 있지 않습니다.

 이제 간단한 제품 설치 프로그램을 생성해봅시다. 예제로 사용할 샘플 제품은 한글과컴퓨터에서 제공하는 타자연습 2007입니다. 여러분도 레지스트리 등록 등 고급 설치 과정이 필요없이 포터블 형태로 실행이 가능한 프로그램을 준비해보세요. 실행 파일 하나를 갖고 진행해도 됩니다.

 아래에 샘플 스크립트를 작성해봤습니다. 파일을 Program Files 폴더에 설치하기 위해선 관리자 권한이 필요합니다. 또 시작메뉴에 프로그램 바로가기 및 제거 바로가기를 생성하고 레지스트리에 프로그램 제거 등록을 했습니다.

# 한글과컴퓨터 타자연습 2007 Installer

Unicode true

; headers
!include "MUI2.nsh" # Modern UI를 적용합니다.

; define const
# 자주 사용하는 문자열을 상수로 지정해두면 유지보수가 수월해집니다.
!define APP_NAME "한글과컴퓨터 타자연습 2007"
!define APP_DIR "HncTT20"
!define FILE_VERSION "2.0.2.6"
!define PRODUCT_VERSION "2.0.2.6"
!define MANUFACTURER "Hancom"
!define REG_APP_NAME "HancomTT20"
!define REG_HKLM_UNINST "Software\Microsoft\Windows\CurrentVersion\Uninstall"

; metadata
# 인스톨러 이름
Name "${APP_NAME}"
# 빌드 후 생성할 파일명
OutFile "한글과컴퓨터 타자연습 2007.exe"
# 설치 디렉터리 기본값
InstallDir "$PROGRAMFILES32\Hnc"
# Windows 커널 5.1부터 적용된 비주얼 스타일을 적용합니다.
XPStyle on
# 인스톨러의 압축 방식을 지정합니다.
SetCompressor zlib
# 설치 도중 자세한 정보를 기본적으로 보여줍니다.
ShowInstDetails show


; file descriptions
# 파일 버전 정보를 기입합니다. 파일 속성의 자세히 탭에 나타나는 정보입니다.
VIProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
VIAddVersionKey "ProductName" "${APP_NAME}"
VIAddVersionKey "CompanyName" "${MANUFACTURER}"
VIAddVersionKey "FileDescription" "한컴타자연습 설치 프로그램"
VIAddVersionKey "LegalCopyright" "Hancom Inc."

; MUI config
# 언/인스톨러의 아이콘을 지정합니다. NSIS 설치 디렉터리에 기본으로 제공하고 있는 리소스를 사용할 수 있습니다.
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"

; inst pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

; uninst pages
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "Korean"

Section "main"
# 파일이 설치될 디렉터리를 지정합니다.
SetOutPath "$INSTDIR"
# 설치할 파일들을 지정합니다. /r 옵션을 통해 이 스크립트가 존재하는 디렉터리의 ${APP_DIR} 폴더 전체를 압축한 후 SetOutPath로 지정한 위치에 설치(압축 해제)합니다.
File /r "${APP_DIR}"
SectionEnd

# 섹션명에 -를 접두어로 붙여두면 이 섹션은 사용자에게 보여지지 않습니다. 단, 여기선 설치 옵션을 선택할 수 있는 COMPONETS 페이지를 삽입하지 않았기 때문에 효과가 없습니다.
Section "-post"
# 설치 로그에 문자열을 한 줄 출력합니다.
DetailPrint "언인스톨 정보 등록"
# 언인스톨러를 생성합니다.
WriteUninstaller "${APP_DIR}\uninstall.exe"
# 시작메뉴에 바로가기를 생성합니다.
SetShellVarContext all # 모든 사용자 계정의 시작메뉴에 생성합니다.
CreateDirectory $SMPROGRAMS\한글과컴퓨터
SetOutPath "$INSTDIR\${APP_DIR}"
CreateShortCut "$SMPROGRAMS\한글과컴퓨터\한컴타자연습 2007.lnk" "$INSTDIR\${APP_DIR}\hnctt.exe"
CreateShortCut "$SMPROGRAMS\한글과컴퓨터\타자연습 제거.lnk" "$INSTDIR\${APP_DIR}\uninstall.exe"
# 언인스톨 레지스트리를 추가합니다.
WriteRegStr HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}" "DisplayName" "${APP_NAME}"
WriteRegStr HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}" "DisplayIcon" "$INSTDIR\${APP_DIR}\uninstall.exe"
WriteRegStr HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}" "InstallLocation" "$INSTDIR"
WriteRegStr HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}" "Publisher" "${MANUFACTURER}"
WriteRegStr HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}" "UninstallString" "$INSTDIR\${APP_DIR}\uninstall.exe"
SectionEnd

# 언인스톨러에서 사용하는 섹션입니다.
Section Uninstall
SectionIn RO
RMDir /r "$INSTDIR\*"
RMDir "$INSTDIR"
SetShellVarContext all
RMDir /r "$STARTMENU\${APP_NAME}"
Delete "$SMPROGRAMS\한글과컴퓨터\한컴타자연습 2007.lnk"
Delete "$SMPROGRAMS\한글과컴퓨터\타자연습 제거.lnk"
DeleteRegKey HKLM "${REG_HKLM_UNINST}\${REG_APP_NAME}"
SectionEnd

 MUI 기본 인터페이스입니다.

 설치 완료 후 프로그램이 설치된 디렉터리로 가보면 정상적으로 파일들이 설치되어 있는 것을 볼 수 있습니다.

 프로그램 제거를 위해 레지스트리도 등록했습니다. 이 위치에 레지스트리를 등록해두면 프로그램 및 기능에 나타납니다.

 프로그램을 삭제하려면 이 곳에서 또는 시작메뉴에서 언인스톨러를 실행할 수 있습니다.

 언인스톨러도 정상 실행됩니다. 제거 후 레지스트리 및 프로그램 파일/폴더가 말끔히 지워졌는지 확인합니다.

 

댓글

댓글 본문