; build/installer.nsh ; NSIS 커스텀 스크립트. electron-builder의 nsis.include로 참조됨. ; ; 목적: ; 1) Visual C++ 재배포 패키지(x64, 2015-2022) 확인 및 사일런트 자동 설치 ; - Ollama 및 faster-whisper 사이드카의 네이티브 의존성이 요구함. ; - NSIS 내장 NSISdl 플러그인(인터넷 다운로드 표준)으로 aka.ms 경유 다운로드. ; 2) 언인스톨 시 번들 Ollama 프로세스 종료. !macro customInstall DetailPrint "VC++ 재배포 패키지(x64) 확인 중..." ; x64 Visual C++ 2015-2022 재배포 패키지 설치 여부 확인 ClearErrors ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Installed" ${If} $0 != "1" DetailPrint "VC++ 재배포 미설치 → 자동 다운로드/설치 시도" ; aka.ms/vs/17/release/vc_redist.x64.exe (영구 리다이렉트 → 최신 17.x) ; NSISdl은 리다이렉트를 따라가며 Microsoft 공식 MSI 패키지를 받는다. NSISdl::download /TIMEOUT=30000 "https://aka.ms/vs/17/release/vc_redist.x64.exe" "$TEMP\vc_redist.x64.exe" Pop $R0 ${If} $R0 == "success" DetailPrint "vc_redist.x64.exe 사일런트 설치 실행" ExecWait '"$TEMP\vc_redist.x64.exe" /install /quiet /norestart' $1 Delete "$TEMP\vc_redist.x64.exe" ${If} $1 == 0 DetailPrint "VC++ 재배포 설치 완료" ${ElseIf} $1 == 1638 ; 1638 = 동일/상위 버전 이미 설치됨 DetailPrint "VC++ 재배포 동일 이상 버전 이미 설치됨 (코드 1638)" ${ElseIf} $1 == 3010 ; 3010 = 설치 성공, 재부팅 필요 DetailPrint "VC++ 재배포 설치 완료 (재부팅 필요)" ${Else} MessageBox MB_OK|MB_ICONEXCLAMATION \ "VC++ 재배포 설치 중 경고 발생 (코드 $1).$\r$\n일부 기능이 동작하지 않을 수 있습니다.$\r$\n수동 설치: https://aka.ms/vs/17/release/vc_redist.x64.exe" ${EndIf} ${Else} DetailPrint "VC++ 재배포 다운로드 실패: $R0" MessageBox MB_OK|MB_ICONEXCLAMATION \ "VC++ 재배포 패키지 다운로드에 실패했습니다.$\r$\n$\r$\n아래 링크에서 수동으로 설치해주세요:$\r$\nhttps://aka.ms/vs/17/release/vc_redist.x64.exe$\r$\n$\r$\n설치하지 않으면 음성 인식이 동작하지 않습니다." ${EndIf} ${Else} DetailPrint "VC++ 재배포 이미 설치됨." ${EndIf} ${If} ${FileExists} "$INSTDIR\resources\ollama\ollama.exe" DetailPrint "번들 Ollama 발견: $INSTDIR\resources\ollama\ollama.exe" ${EndIf} !macroend !macro customUnInstall DetailPrint "번들 Ollama 프로세스 종료 시도" nsExec::Exec 'taskkill /F /IM ollama.exe' Pop $0 !macroend