본문 바로가기
코딩취미/프로그램 지식

NSIS 시리즈 ③ – 마법사 UI 만들기: MUI.nsh와 페이지 커스터마이징

by 브링블링 2025. 6. 5.
반응형

NSIS 시리즈 ③ – 마법사 UI 만들기: MUI.nsh와 페이지 커스터마이징

기본 NSIS 설치기는 기능은 많지만 UI는 다소 투박하게 느껴질 수 있습니다. 하지만 NSIS는 MUI.nsh를 통해 환영 페이지, 라이선스 동의 페이지, 설치 폴더 선택 페이지, 진행 상황 표시, 완료 페이지 등을 제공하여 일반적인 마법사 스타일 설치기를 쉽게 구성할 수 있게 해줍니다.


✅ MUI (Modern UI)란?

MUI는 NSIS의 기본 GUI를 개선한 모듈로, 설치 과정을 마법사 스타일로 구성할 수 있게 해줍니다.
!include "MUI.nsh" 한 줄로 활성화되며, 설치기의 단계별 UI 흐름을 선언적으로 구성할 수 있습니다.


🧱 기본 구조 예제

!include "MUI.nsh"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "English"

위 코드는 5단계로 구성된 설치 마법사를 정의합니다.


📋 각 페이지 설명

페이지 매크로 설명
MUI_PAGE_WELCOME 설치 시작 안내
MUI_PAGE_LICENSE 라이선스 동의 (텍스트 파일 필요)
MUI_PAGE_DIRECTORY 설치 경로 선택
MUI_PAGE_INSTFILES 설치 진행 상태 표시
MUI_PAGE_FINISH 설치 완료 안내 및 실행 옵션
반응형

🛠️ 전체 예제: MUI 기반 설치기 구성

!include "MUI.nsh"

Name "MyMUIApp"
OutFile "MyMUIApp_Setup.exe"
InstallDir "$PROGRAMFILES\MyMUIApp"
RequestExecutionLevel admin

; 페이지 구성
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\MyApp.exe"
!insertmacro MUI_PAGE_FINISH

; 언어 설정
!insertmacro MUI_LANGUAGE "English"

Section "Install"
  SetOutPath "$INSTDIR"
  File "MyApp.exe"
  CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
SectionEnd

🧩 고급 옵션: 페이지 커스터마이징

✅ MUI_FINISHPAGE_RUN

  • 설치 완료 후 프로그램 자동 실행 옵션 표시
!define MUI_FINISHPAGE_RUN "$INSTDIR\MyApp.exe"

✅ MUI_PAGE_LICENSE 커스터마이징

  • 사용자에게 반드시 동의 받기
  • LICENSE 파일 경로 지정
!insertmacro MUI_PAGE_LICENSE "docs\license.txt"

✅ 사용자 경로 기본값 설정

InstallDir "$PROGRAMFILES\MyMUIApp"

✅ 조건부 페이지 표시

Function .onInit
  ; 조건에 따라 라이선스 페이지 생략 가능
FunctionEnd

🧪 실전 예제: 설치 완료 후 메시지 추가

!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"

 

또는:

Function .onInstSuccess
  MessageBox MB_OK "설치가 완료되었습니다. 프로그램을 실행합니다."
FunctionEnd

💬 다국어 설정 예시

!insertmacro MUI_LANGUAGE "Korean"

다국어 설치를 원할 경우 MUI_LANGUAGE를 여러 번 선언하고 조건문으로 선택할 수 있습니다.

반응형