
🚀 NSIS 설치 스크립트 고급 기능 확장 가이드
🧩 1단계: 제거 프로그램 생성 (Uninstaller)
Section "Install"
SetOutPath "$INSTDIR"
File "MyApp.exe"
WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd
Section "Uninstall"
Delete "$INSTDIR\MyApp.exe"
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
SectionEnd
🔍 설치 디렉토리에 제거용 실행 파일이 생성됩니다. 사용자는 “프로그램 제거”에서 이 파일로 앱을 삭제할 수 있어요.
🧩 2단계: 레지스트리 등록
Section "Install"
WriteRegStr HKLM "Software\MyApp" "Install_Dir" "$INSTDIR"
SectionEnd
Section "Uninstall"
DeleteRegKey HKLM "Software\MyApp"
SectionEnd
🔍 설치된 위치나 설정 값을 레지스트리에 등록하고, 제거 시 함께 삭제합니다.
📌 관리자 권한이 필요하므로 RequestExecutionLevel admin
꼭 설정하세요.
🧩 3단계: 설치 후 자동 실행
Section "Install"
Exec "$INSTDIR\MyApp.exe"
SectionEnd
또는, 설치 완료 후 실행 여부를 묻는 UI 구성도 가능해요:
Function .onInstSuccess
MessageBox MB_YESNO "설치가 완료되었습니다. MyApp을 실행할까요?" IDYES run
return
run:
Exec "$INSTDIR\MyApp.exe"
FunctionEnd
🧩 4단계: 시작프로그램 등록 (자동 실행)
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp" "$INSTDIR\MyApp.exe"
삭제 시에는 아래처럼 제거:
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp"
🧩 5단계: 환경변수 추가
System::Call 'Kernel32::GetEnvironmentVariableA(t, .r0, i) i(1024) t("PATH")'
StrCpy $0 "$0;$INSTDIR"
System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("PATH", r0)'
📌 설치 경로를 환경변수 PATH에 추가해 CLI에서도 실행 가능하게 만드는 용도입니다.
🧩 6단계: 파일 복사 구조 확장 (서브 폴더 포함)
SetOutPath "$INSTDIR\bin"
File "bin\MyApp.exe"
SetOutPath "$INSTDIR\config"
File "config\settings.ini"
또는 전체 폴더 구조를 유지한 채 통째로 복사하려면:
SetOutPath "$INSTDIR"
File /r "MyApp_Folder\*.*"
🧩 7단계: 아이콘 등록 (시작 메뉴, 바탕화면)
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\MyApp.exe"
제거 시:
Delete "$DESKTOP\MyApp.lnk"
Delete "$SMPROGRAMS\MyApp\MyApp.lnk"
RMDir "$SMPROGRAMS\MyApp"
🧩 8단계: 무인 설치 (Silent Install)
SilentInstall silent
SilentUnInstall silent
📌 배포 시 사용자 UI 없이 설치하려면, 이 설정을 명시하거나 명령줄에서 /S
옵션을 사용하세요.
MyApp_Installer.exe /S
🧩 9단계: 사용자 정의 변수 활용
Var INSTALL_TIME
Function .onInit
GetTime $INSTALL_TIME "%Y-%m-%d %H:%M:%S"
FunctionEnd
🔍 로깅, 디버깅, 사용자 동의 확인용 팝업 등에 다양하게 응용할 수 있어요.
🧩 10단계: 설치 완료 후 웹 페이지 열기
ExecShell "open" "https://example.com/thank-you"
설치가 끝난 뒤 특정 웹 페이지(예: 고객지원, 피드백 등)로 유도할 때 유용합니다.
📌 정리
이제 NSIS를 통해 단순한 설치 프로그램을 넘어서, 실무에서도 바로 쓸 수 있는 프로페셔널한 인스톨러를 만들 수 있게 되었어요.
필요에 따라 위 기능들을 조합해 사용하고, Function
과 IfFileExists
, ReadRegStr
, MessageBox
등을 활용해 더욱 복잡한 조건 분기까지 처리할 수 있습니다.