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

NSIS 시리즈 ④ – 파일 복사와 바로가기 만들기: 설치기의 핵심 기능

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

NSIS 시리즈 ④ – 파일 복사와 바로가기 만들기: 설치기의 핵심 기능

설치기에서 가장 기본이자 핵심적인 기능은 파일을 설치 경로로 복사하고, 사용자가 쉽게 실행할 수 있도록 바로가기(Shortcut) 를 만들어주는 것입니다. 이번 글에서는 NSIS 스크립트에서 이러한 기능을 구현하는 방법을 실전 예제 코드와 함께 소개합니다.


✅ 설치기의 기본 흐름 정리

설치기에서 가장 기본적인 흐름은 다음과 같습니다:

  1. 설치 폴더 지정
  2. 설치 대상 파일 복사
  3. 시작메뉴 또는 바탕화면에 바로가기 생성
  4. 설치 완료 안내

📁 예제 프로젝트 구조

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" 형태 유지)
반응형