반응형
NSIS 시리즈 ④ – 파일 복사와 바로가기 만들기: 설치기의 핵심 기능
설치기에서 가장 기본이자 핵심적인 기능은 파일을 설치 경로로 복사하고, 사용자가 쉽게 실행할 수 있도록 바로가기(Shortcut) 를 만들어주는 것입니다. 이번 글에서는 NSIS 스크립트에서 이러한 기능을 구현하는 방법을 실전 예제 코드와 함께 소개합니다.
✅ 설치기의 기본 흐름 정리
설치기에서 가장 기본적인 흐름은 다음과 같습니다:
- 설치 폴더 지정
- 설치 대상 파일 복사
- 시작메뉴 또는 바탕화면에 바로가기 생성
- 설치 완료 안내
📁 예제 프로젝트 구조
MyInstaller/
├─ MyApp.exe
├─ LICENSE.txt
└─ setup.nsi
🧱 파일 복사 관련 명령어
명령어 | 설명 |
SetOutPath | 복사할 경로 설정 ($INSTDIR 권장) |
File | 복사할 파일 지정 |
File /r | 디렉토리 전체 재귀 복사 |
CreateDirectory | 폴더 생성 (생략해도 자동 생성됨) |
🛠️ 예제 1: 파일 복사 기본
OutFile "MyApp_Setup.exe"
InstallDir "$PROGRAMFILES\MyApp"
RequestExecutionLevel admin
Section "Install"
SetOutPath "$INSTDIR"
File "MyApp.exe"
SectionEnd
이 코드는 사용자가 지정한 $INSTDIR 경로에 MyApp.exe를 복사합니다.
🧱 바로가기 생성 관련 명령어
명령어 | 설명 |
CreateShortCut | 바로가기 생성 |
Delete | 파일/바로가기 삭제 |
RMDir | 폴더 삭제 |
🛠️ 예제 2: 바탕화면과 시작메뉴에 바로가기 생성
Section
SetOutPath "$INSTDIR"
File "MyApp.exe"
; 시작메뉴 폴더 생성
CreateDirectory "$SMPROGRAMS\MyApp"
; 바로가기 생성
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\MyApp.exe"
SectionEnd
반응형
🧪 예제 3: 다수 파일 설치 + 디렉토리 재귀 복사
Section "Install All Files"
SetOutPath "$INSTDIR"
File /r "dist\*" ; dist 폴더의 전체 파일/폴더 복사
SectionEnd
File /r 명령은 특정 폴더 내의 모든 하위 파일과 디렉토리를 재귀적으로 복사합니다.
📦 설치 중 경로 동적 생성
Section
StrCpy $0 "$INSTDIR\data"
CreateDirectory "$0"
File /oname=$0\config.json "default_config.json"
SectionEnd
File /oname=...을 사용하면 복사할 대상 파일명을 변경할 수 있습니다.
🧹 설치 제거 시 바로가기와 폴더 정리 (언인스톨 예고편)
Section "Uninstall"
Delete "$DESKTOP\MyApp.lnk"
Delete "$SMPROGRAMS\MyApp\MyApp.lnk"
RMDir "$SMPROGRAMS\MyApp"
Delete "$INSTDIR\MyApp.exe"
RMDir "$INSTDIR"
SectionEnd
다음 편에서는 위 내용을 포함하여 언인스톨러를 만드는 방법을 소개할 예정입니다.
✅ 실전 팁
- $SMPROGRAMS = 시작메뉴의 프로그램 폴더 (C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs)
- $DESKTOP = 바탕화면 경로
- 경로에 띄어쓰기가 있을 수 있으므로 항상 큰따옴표 없이 쓸 것 ("$VAR" 형태 유지)
반응형
'코딩취미 > 프로그램 지식' 카테고리의 다른 글
NSIS 시리즈 ⑥ – 레지스트리 및 환경변수 다루기: 시스템과 상호작용하기 (0) | 2025.06.06 |
---|---|
NSIS 시리즈 ⑤ – 언인스톨러 만들기: 깔끔한 제거 기능 구현 (0) | 2025.06.05 |
NSIS 시리즈 ③ – 마법사 UI 만들기: MUI.nsh와 페이지 커스터마이징 (0) | 2025.06.05 |
NSIS 시리즈 ② – 변수와 조건문, 설치 로직 만들기 (0) | 2025.06.05 |
NSIS란 무엇인가? 설치기 제작의 첫걸음 (0) | 2025.06.05 |