appId: com.d3ro.voice productName: D3RO Voice copyright: Copyright © 2026 D3RO directories: buildResources: resources output: release/${version} files: - out/**/* - "!out/**/*.map" # native 모듈은 asar 외부에 배치 asarUnpack: - "node_modules/better-sqlite3/**" - "node_modules/uiohook-napi/**" - "node_modules/@nut-tree-fork/**" # ──────────────────────────────────────────────────────────────────── # Windows # ──────────────────────────────────────────────────────────────────── win: target: - target: nsis arch: - x64 icon: resources/icons/icon.ico nsis: oneClick: false perMachine: false allowToChangeInstallationDirectory: true createDesktopShortcut: true createStartMenuShortcut: true shortcutName: D3RO Voice deleteAppDataOnUninstall: false # ──────────────────────────────────────────────────────────────────── # macOS # ──────────────────────────────────────────────────────────────────── mac: category: public.app-category.productivity icon: resources/icons/icon.icns target: - target: dmg arch: - arm64 - x64 - target: zip arch: - arm64 - x64 hardenedRuntime: true 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는 음성 인식을 위해 마이크 접근이 필요합니다." NSCameraUsageDescription: "D3RO Voice는 스크린 컨텍스트 캡처를 위해 화면 녹화 권한이 필요합니다." NSAppleEventsUsageDescription: "D3RO Voice는 활성 앱 정보를 가져오기 위해 다른 앱 제어 권한이 필요합니다." NSSystemAdministrationUsageDescription: "D3RO Voice는 전역 핫키 등록을 위해 접근성 권한이 필요합니다." dmg: writeUpdateInfo: false contents: - x: 130 y: 220 - x: 410 y: 220 type: link path: /Applications # ──────────────────────────────────────────────────────────────────── # Linux (참고용) # ──────────────────────────────────────────────────────────────────── linux: target: - AppImage category: Utility icon: resources/icons/icon.png # ──────────────────────────────────────────────────────────────────── # 공통 리소스 번들 # ──────────────────────────────────────────────────────────────────── extraResources: # 효과음 (플랫폼 공통) - from: resources/sounds/ to: sounds/ filter: - "*.wav" # 앱 아이콘 (트레이 등 런타임에서 참조) - from: resources/icons/ to: icons/ filter: - "**/*" # SoX 바이너리 (번들되어 있으면 번들, 없으면 시스템 PATH) - from: resources/sox/ to: sox/ filter: - "**/*" # Python sidecar (PyInstaller 빌드 결과) # 빌드 전: python scripts/build-sidecar.py (플랫폼에서 개별 실행) - from: sidecar-dist/sidecar/ to: sidecar/ filter: - "**/*" npmRebuild: true