NSIS(Nullsoft Scriptable Intall System)란?

윤재은·2025년 2월 8일

0. 개요

현재 제작중인 WebRTC를 활용한 웹 게임 프로젝트에서 사용자가 음성으로 하는 부적절한 언행(욕설, 정치적 발언, ...)의 로그를 남기고 싶다는 생각이 들어 Whisper AI를 활용해 텍스트로 변환하고, 직접 제작한 LLM 모델을 활용해 부적절한 언행의 여부를 파악하는 로직을 구현했지만 AI 서버를 가동하기에는 비용이 많이 들어 사용자 컴퓨터에서 실행하도록 하기 위해 설치 스크립트를 찾던 중 NSIS라는 걸 찾게 되었다.

1. NSIS(Nullsoft Scriptable Intall System)란??

NSIS는 Windows 환경에서 설치 프로그램을 만들 때 사용하는 도구로, 주로 프로그램을 쉽게 배포, 설치 할 수 있게 도와주며, 스크립트 기반으로 작동하여 유연한 설치 프로세스를 제공한다, 설치 파일에서 할 작업들을 스크립트로 작성하여 .exe 파일을 생성한다.

스크립트를 작성해 사용자가 설치할 수 있는 .exe 파일을 만든다!

2. NSIS GUI 설치방법

2-1. 설치 파일 다운로드 https://nsis.sourceforge.io/Download

설치 사이트
상단의 경로로 들어가 Download를 눌러 설치 경로로 이동하면 SourceForge 페이지로 이동하는데 잠시 기다리면 자동으로 다운받을 수 있다.

2-2. 설치 과정





어려운건 없다! 설치목록 선택 -> 경로 선택 하면 설치가 완료된다.

나 같은 경우에는 전부 설치했다 😀

설치하면 이런 화면을 볼 수 있다

3. 설치 스크립트 작성

NSIS 같은 경우 nsi 스크립트 기반으로 설치 파일을 만드는 방식이기 때문에 가장 먼저 스크립트를 작성해야 한다

vscode 환경에서 .nis 파일을 만들어준 후 스크립트를 작성하면 된다!

; 애플리케이션 정보
Name "Meeple Installer"
OutFile "Meeple Setup 1.0.0.exe"
InstallDir "C:\meeple"                   ; 고정 설치 경로: C:\meeple
RequestExecutionLevel admin              ; 관리자 권한 요구

; 설치 진행 화면 페이지 구성 (사용자가 경로를 변경할 수 없도록)
Page instfiles

Section "Install"

  ; 설치 전에 별도의 디렉토리 생성: C:\meeple 및 C:\meeple\meeple_audio
  CreateDirectory "C:\meeple"
  CreateDirectory "C:\meeple\meeple_audio"

  ; 실제 설치 경로 설정 (C:\meeple)
  SetOutPath "$INSTDIR"
  
  ; 1. Electron 앱 실행 파일 복사  
  ;    (아래 경로는 Electron 빌드 결과물의 실제 경로로 수정)
  File "C:\Users\User\AppData\Local\Programs\my-electron-app\MyElectronApp.exe"
  
  ; 2. 필요한 추가 리소스 복사 (예: resources 폴더 등)
  CreateDirectory "$INSTDIR\resources"
  File /r "C:\Users\User\AppData\Local\Programs\my-electron-app\*.*"
  
  ; 3. Python 모델 파일 복사  
  ;    모델 파일들을 설치 경로 내의 models 폴더에 복사
  CreateDirectory "$INSTDIR\models"
  File /oname=models\badword_model.pkl "C:\Users\User\Desktop\electron_test\python_model\badword_model.pkl"
  File /oname=models\vectorizer.pkl "C:\Users\User\Desktop\electron_test\python_model\vectorizer.pkl"
  
  ; 4. 바탕화면에 바로가기 생성  
  CreateShortCut "$DESKTOP\MyElectronApp.lnk" "$INSTDIR\MyElectronApp.exe"
  
SectionEnd

;--------------------------------
; (선택 사항) PATH 환경 변수 업데이트
;--------------------------------
Section "Update PATH"
  ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
  StrCpy $1 "$INSTDIR"
  StrCpy $0 "$0;$1"
  WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0"
  SendMessage ${HWND_BROADCAST} ${WM_SETTINGCHANGE} 0 "STR:Environment" /TIMEOUT=5000
SectionEnd

이런식으로 스크립트를 작성하면 되는데 인터넷에 여러 참고할 자료가 많으니 보면서 작성하면 될 것 같다

나 같은 경우는 gpt의 도움을 받았다 ㅎㅎ;

추가) 세미콜론(;) 부분은 주석이지만 NSIS가 인식하지 못할 수 있으니 지우는걸 추천한다❗❗❗


4. 설치 파일 제작

NSIS GUI에서 Compile NSI script를 누르면

다음과 같은 화면으로 이동하는데 빨간색 네모로 표시한 Load Script를 누르면 작성한 .nis 파일을 불러올 수 있다.

불러오면 다음과 같이 스크립트가 실행되는데 오류가 나면 빨간색으로 변한다!

스크립트의 오류 부분을 고치고 성공적으로 테스트가 끝나면

이렇게 성공적으로 생긴다!!!

profile
항상 열정적으로 임합니다!

0개의 댓글