반응형
NSIS 고급 활용 시리즈 ⑥ – 설치 후 구성 자동화: 바로가기, 서비스 등록, 환경변수 설정
설치가 완료된 뒤, 사용자에게는 다음과 같은 편의 기능이 제공되어야 합니다:
- 바탕화면이나 시작 메뉴에 바로가기 생성
- 윈도우 서비스로 자동 시작되도록 등록
- 명령어 실행이 가능한 환경변수 설정
이번 편에서는 NSIS로 이러한 설치 후 구성 작업을 자동화하는 방법을 알아봅니다.
✅ 설치 후 구성 기능 요약
기능 | 설명 |
바로가기 생성 | CreateShortCut, CreateDirectory 사용 |
환경변수 설정 | EnVar 플러그인 또는 레지스트리 직접 쓰기 |
윈도우 서비스 등록 | nsExec로 sc.exe 실행 |
🖥️ ① 바탕화면 및 시작메뉴에 바로가기 만들기
Section "Shortcuts"
; 시작 메뉴 폴더 생성
CreateDirectory "$SMPROGRAMS\MyApp"
; 시작 메뉴 바로가기
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\myapp.exe"
; 바탕화면 바로가기
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\myapp.exe"
SectionEnd
CreateShortCut은 실행파일, 아이콘, 인수 등 다양한 옵션을 지정할 수 있습니다.
🌐 ② 환경변수 등록 (PATH 포함)
방법 A – EnVar 플러그인 사용
!include "EnvVarUpdate.nsh"
Section "Set Environment Variable"
; PATH에 추가 (중복 방지)
${EnvVarUpdate} $0 "PATH" "A" "HKCU" "$INSTDIR"
SectionEnd
A: Append / HKCU: Current User 기준 (관리자 권한 불필요)
방법 B – 레지스트리 직접 쓰기 (관리자 필요)
WriteRegExpandStr HKCU "Environment" "MYAPP_PATH" "$INSTDIR"
System::Call 'User32::SendMessageTimeoutA(i 0xffff, i ${WM_SETTINGCHANGE}, i 0, t "Environment", i 0, i 5000, *i .r0)'
환경변수 변경 후에는 반드시 SendMessageTimeout으로 시스템 갱신이 필요합니다.
반응형
⚙️ ③ 윈도우 서비스 등록 (sc.exe 사용)
예: MyService.exe를 윈도우 서비스로 등록
Section "Register Windows Service"
nsExec::ExecToLog 'sc create "MyService" binPath= "$INSTDIR\MyService.exe" start= auto'
nsExec::ExecToLog 'sc start "MyService"'
SectionEnd
- sc create: 서비스 등록
- binPath= 뒤에는 공백 필수
- 관리자 권한 필수 (RequestExecutionLevel admin 필요)
서비스가 이미 있는 경우에는 sc delete MyService로 제거 후 다시 등록하는 로직을 넣을 수 있습니다.
🛠️ 실전 예제: 설치 후 전체 구성 자동화
Section "Post Install Configuration"
; 바로가기 생성
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\myapp.exe"
; 환경변수 PATH에 설치 폴더 추가
${EnvVarUpdate} $0 "PATH" "A" "HKCU" "$INSTDIR"
; 윈도우 서비스 등록
nsExec::ExecToLog 'sc create "MyAppService" binPath= "$INSTDIR\myappsvc.exe" start= auto'
nsExec::ExecToLog 'sc start "MyAppService"'
SectionEnd
💡 팁
내용 | 항목 |
CreateShortCut | 실행파일 외에 .bat, .url, .txt도 대상 가능 |
환경변수 설정 | 사용자 수준(HKCU)과 시스템 수준(HKLM)은 구분 필요 |
서비스 등록 실패 | 이미 존재할 경우 sc query로 상태 점검 후 처리 |
반응형
'코딩취미 > 프로그램 지식' 카테고리의 다른 글
NSIS 고급 활용 시리즈 ⑧ – 설치 복구 기능 구현: 구성 요소 기반 선택적 Repair 모드 (0) | 2025.06.08 |
---|---|
NSIS 고급 활용 시리즈 ⑦ – 설치 로그 기록 및 사용자 피드백 수집 (0) | 2025.06.08 |
NSIS 고급 활용 시리즈 ⑤ – 설치 복구 및 재설치 제어: Repair 모드 구현과 중복 방지 (0) | 2025.06.08 |
NSIS 고급 활용 시리즈 ④ – 사용자 환경 맞춤 설치기: OS, 언어, 하드웨어 조건 기반 설치 분기 (0) | 2025.06.08 |
NSIS 고급 활용 시리즈 ③ – 설치 보안 강화: 무결성 검증, 암호 입력, 관리자 권한 처리 (0) | 2025.06.08 |