From a18666dd6ab29f4780f8dc8a9ab2a7362b54b507 Mon Sep 17 00:00:00 2001 From: yunchan8804 Date: Wed, 15 Apr 2026 21:43:39 +0900 Subject: [PATCH] =?UTF-8?q?fix(build):=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=20=EC=A0=9C=EA=B1=B0=20+=20NSISdl=20?= =?UTF-8?q?=EB=B9=84=EC=9D=98=EC=A1=B4=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - electron-builder.yml: win/mac/linux icon 경로 제거 (resources/icons/가 비어있어 아이콘 수집 실패) Electron 기본 아이콘 사용. 추후 resources/icons/icon.ico 준비되면 win.icon 복원. - extraResources의 resources/icons/ 복사 엔트리 삭제 - installer.nsh: NSISdl::download 제거 → 번들 플러그인 의존 제거 VC++ 재배포 미설치 시 수동 설치 링크 안내만 표시 --- apps/desktop/build/installer.nsh | 42 ++++++------------------------- apps/desktop/electron-builder.yml | 21 +++------------- 2 files changed, 11 insertions(+), 52 deletions(-) diff --git a/apps/desktop/build/installer.nsh b/apps/desktop/build/installer.nsh index d076b78..8cc9a5c 100644 --- a/apps/desktop/build/installer.nsh +++ b/apps/desktop/build/installer.nsh @@ -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} diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml index a9c7044..d4f2dd5 100644 --- a/apps/desktop/electron-builder.yml +++ b/apps/desktop/electron-builder.yml @@ -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: