본 문서는 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 기본 인터페이스입니다.
설치 완료 후 프로그램이 설치된 디렉터리로 가보면 정상적으로 파일들이 설치되어 있는 것을 볼 수 있습니다.
프로그램 제거를 위해 레지스트리도 등록했습니다. 이 위치에 레지스트리를 등록해두면 프로그램 및 기능에 나타납니다.
프로그램을 삭제하려면 이 곳에서 또는 시작메뉴에서 언인스톨러를 실행할 수 있습니다.
언인스톨러도 정상 실행됩니다. 제거 후 레지스트리 및 프로그램 파일/폴더가 말끔히 지워졌는지 확인합니다.