0. 개요
현재 제작중인 WebRTC를 활용한 웹 게임 프로젝트에서 사용자가 음성으로 하는 부적절한 언행(욕설, 정치적 발언, ...)의 로그를 남기고 싶다는 생각이 들어 Whisper AI를 활용해 텍스트로 변환하고, 직접 제작한 LLM 모델을 활용해 부적절한 언행의 여부를 파악하는 로직을 구현했지만 AI 서버를 가동하기에는 비용이 많이 들어 사용자 컴퓨터에서 실행하도록 하기 위해 설치 스크립트를 찾던 중 NSIS라는 걸 찾게 되었다.
1. NSIS(Nullsoft Scriptable Intall System)란??
NSIS는 Windows 환경에서 설치 프로그램을 만들 때 사용하는 도구로, 주로 프로그램을 쉽게 배포, 설치 할 수 있게 도와주며, 스크립트 기반으로 작동하여 유연한 설치 프로세스를 제공한다, 설치 파일에서 할 작업들을 스크립트로 작성하여 .exe 파일을 생성한다.
➡ 스크립트를 작성해 사용자가 설치할 수 있는 .exe 파일을 만든다!
2. NSIS GUI 설치방법

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







; 애플리케이션 정보
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




