fix(build): 아이콘 의존 제거 + NSISdl 비의존화

- electron-builder.yml: win/mac/linux icon 경로 제거 (resources/icons/가 비어있어 아이콘 수집 실패)
  Electron 기본 아이콘 사용. 추후 resources/icons/icon.ico 준비되면 win.icon 복원.
- extraResources의 resources/icons/ 복사 엔트리 삭제
- installer.nsh: NSISdl::download 제거 → 번들 플러그인 의존 제거
  VC++ 재배포 미설치 시 수동 설치 링크 안내만 표시
This commit is contained in:
yunchan8804 2026-04-15 21:43:39 +09:00
parent adc88853fa
commit a18666dd6a
2 changed files with 11 additions and 52 deletions

View file

@ -1,49 +1,21 @@
; build/installer.nsh
; NSIS 커스텀 스크립트. electron-builder의 nsis.include로 참조됨.
; electron-builder의 nsis.include로 참조되는 NSIS 커스텀 스크립트.
; 번들 플러그인 의존을 피하기 위해 자동 다운로드는 제거하고 정보성 안내만 수행.
;
; 목적:
; 1) Visual C++ 재배포 패키지(x64, 2015-2022) 확인 사일런트 자동 설치
; - Ollama faster-whisper 사이드카의 네이티브 의존성이 요구함.
; - NSIS 내장 NSISdl 플러그인(인터넷 다운로드 표준)으로 aka.ms 경유 다운로드.
; 2) 언인스톨 번들 Ollama 프로세스 종료.
; 1) Visual C++ 재배포 패키지(x64, 2015-2022) 설치 여부 확인 + 안내
; 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}
MessageBox MB_OK|MB_ICONINFORMATION \
"Microsoft Visual C++ 재배포 패키지(x64, 2015-2022)가 필요합니다.$\r$\n$\r$\n설치를 계속하되, 앱 첫 실행 시 오류가 나면 아래 링크에서 수동 설치 후 재시도하세요:$\r$\n$\r$\nhttps://aka.ms/vs/17/release/vc_redist.x64.exe"
DetailPrint "VC++ 재배포 미설치 — 사후 수동 설치 안내 표시됨"
${Else}
DetailPrint "VC++ 재배포 이미 설치됨."
${EndIf}

View file

@ -21,20 +21,20 @@ asarUnpack:
# ────────────────────────────────────────────────────────────────────
# Windows
# 주: icon 지정 시 resources/icons/icon.ico 필요. 초기 배포에선 생략하여
# electron 기본 아이콘 사용(아이콘 준비되면 win.icon 라인 추가).
# ────────────────────────────────────────────────────────────────────
win:
target:
- target: nsis
arch:
- x64
icon: resources/icons/icon.ico
# ────────────────────────────────────────────────────────────────────
# macOS
# ────────────────────────────────────────────────────────────────────
mac:
category: public.app-category.productivity
icon: resources/icons/icon.icns
target:
- target: dmg
arch:
@ -48,8 +48,6 @@ mac:
gatekeeperAssess: false
entitlements: build/entitlements.mac.plist
entitlementsInherit: build/entitlements.mac.plist
# notarize: 환경변수 APPLE_ID / APPLE_APP_SPECIFIC_PASSWORD / APPLE_TEAM_ID 설정 시 활성화.
# CI/dev 환경에서는 NOTARIZE=false로 스킵 가능.
notarize: false
extendInfo:
NSMicrophoneUsageDescription: "D3RO Voice는 음성 인식을 위해 마이크 접근이 필요합니다."
@ -74,7 +72,6 @@ linux:
target:
- AppImage
category: Utility
icon: resources/icons/icon.png
# ────────────────────────────────────────────────────────────────────
# 공통 리소스 번들
@ -86,29 +83,19 @@ extraResources:
filter:
- "*.wav"
# 앱 아이콘 (트레이 등 런타임에서 참조)
- from: resources/icons/
to: icons/
filter:
- "**/*"
# SoX 바이너리 (번들되어 있으면 번들, 없으면 시스템 PATH)
# SoX 바이너리
- from: resources/sox/
to: sox/
filter:
- "**/*"
# Python sidecar (PyInstaller 빌드 결과)
# 빌드 전: python scripts/build-sidecar.py (플랫폼에서 개별 실행)
- from: sidecar-dist/sidecar/
to: sidecar/
filter:
- "**/*"
# Ollama 바이너리
# 빌드 전: powershell scripts/download-ollama.ps1 (Windows)
# bash scripts/download-ollama.sh (macOS/Linux)
# 번들된 ollama가 있으면 LocalLLMService가 1순위로 사용.
# Ollama 바이너리 (포터블 zip을 사전 배치)
- from: resources/ollama/
to: ollama/
filter: