Files
geo/apps/desktop-client/electron-builder.yml
T
root a9af6c634c
Backend CI / Backend (push) Successful in 13m6s
Deployment Config CI / Deployment Config (push) Successful in 17s
Frontend CI / Frontend (push) Successful in 2m24s
chore(desktop-client): add macOS code-signing and notarization scaffolding
- Move the build config out of package.json into electron-builder.yml so
  the mac block can carry hardenedRuntime, entitlements, universal arch,
  and usage-description Info.plist keys. Drop identity:null (which
  forces unsigned builds) and let CSC_NAME or the keychain decide.
- Add entitlements plist files and three helper scripts: sign-setup.sh
  (one-time keychain prep with notarytool store-credentials),
  sign-mac.sh (sign + notarize + staple, supports keychain or CI env
  vars), and ci-import-cert.sh (CI keychain bootstrap).
- Ignore .env.signing so local credentials don't sneak into the repo,
  and pin @emnapi/{core,runtime} as devDependencies so universal builds
  resolve them deterministically.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 16:02:14 +08:00

80 lines
2.6 KiB
YAML

appId: com.geo.rankly.desktop
productName: 省心推
copyright: Copyright © 2026 shengxintui.com. All Rights Reserved.
directories:
output: release
buildResources: build
compression: maximum
removePackageScripts: true
removePackageKeywords: true
asar: true
asarUnpack:
- "**/node_modules/better-sqlite3/build/Release/**"
- "**/node_modules/better-sqlite3/lib/**"
- "**/node_modules/bindings/**"
- "**/node_modules/file-uri-to-path/**"
- "**/node_modules/playwright-core/lib/**"
- "**/node_modules/playwright-core/bin/**"
files:
- out/**/*
- package.json
- "!**/*.map"
- "!**/*.ts"
- "!**/*.tsx"
- "!**/*.md"
- "!**/*.markdown"
- "!**/{test,tests,__tests__,__mocks__,example,examples,docs,doc,demo,samples,man}/**"
- "!**/{LICENSE,LICENSE.*,license,CHANGELOG,CHANGELOG.*,README,README.*,HISTORY,HISTORY.*,AUTHORS,CONTRIBUTING}*"
- "!**/.*"
- "!**/node_modules/.bin/**"
- "!**/node_modules/*/{Makefile,Gulpfile.js,Gruntfile.js,CMakeLists.txt,*.coffee,*.flow,*.c,*.cc,*.cpp,*.h,*.hpp,*.gyp,*.gypi,*.tgz,binding.gyp}"
- "!**/node_modules/**/{*.d.ts,tsconfig*.json,jest.config*,rollup.config*,webpack.config*,vite.config*}"
- "!**/node_modules/better-sqlite3/{deps,src,docs,benchmark}/**"
- "!**/node_modules/better-sqlite3/{test_extension.c,download.sh,*.gyp,*.gypi}"
- "!**/node_modules/playwright-core/{types,ThirdPartyNotices.txt}/**"
- "!**/node_modules/**/*.{c,cc,cpp,h,hpp,cmake,m4,am,sh}"
mac:
category: public.app-category.productivity
# identity 不写死:让 electron-builder 自动从 CSC_NAME 环境变量或钥匙串里挑
# 注意:写 `identity: null` 是"明确不签名",不要这么写
notarize: false # 我们用 notarytool 自己跑,比 electron-builder 内置更稳
hardenedRuntime: true
gatekeeperAssess: false
entitlements: build/entitlements.mac.plist
entitlementsInherit: build/entitlements.mac.inherit.plist
electronLanguages:
- en
- zh_CN
extendInfo:
NSCameraUsageDescription: 用于视频会议和录屏功能
NSMicrophoneUsageDescription: 用于音频采集
NSAppleEventsUsageDescription: 用于自动化控制其他应用
target:
- target: dmg
arch: [arm64, universal]
# - target: zip
# arch: [arm64, universal]
dmg:
format: ULFO
contents:
- x: 130
y: 220
- x: 410
y: 220
type: link
path: /Applications
win:
target:
- target: nsis
arch: [x64]
nsis:
oneClick: false
perMachine: false
allowToChangeInstallationDirectory: true
linux:
category: Office
target:
- target: AppImage
arch: [x64]
publish: null