adapte macos

This commit is contained in:
2026-08-08 22:45:23 +08:00
parent 0d7438e368
commit 1fa69aa055
46 changed files with 2301 additions and 933 deletions

View File

@@ -0,0 +1,36 @@
/**
* 开发态跑的是 node_modules 里的 Electron.app菜单栏名称来自 Info.plist。
* 把 CFBundleName / CFBundleDisplayName 改成产品名(仅 macOSnpm i 后需再跑一次)。
*/
import { createRequire } from 'module'
import { execFileSync } from 'child_process'
import { existsSync } from 'fs'
import { dirname, join } from 'path'
import { platform } from 'os'
const APP_NAME = 'LoveLiveMusicPlayer'
if (platform() !== 'darwin') {
process.exit(0)
}
const require = createRequire(import.meta.url)
let electronBinary
try {
electronBinary = require('electron')
} catch {
process.exit(0)
}
const plist = join(dirname(String(electronBinary)), '..', 'Info.plist')
if (!existsSync(plist)) {
console.warn('[patch-electron] Info.plist 未找到:', plist)
process.exit(0)
}
for (const key of ['CFBundleName', 'CFBundleDisplayName']) {
execFileSync('plutil', ['-replace', key, '-string', APP_NAME, plist])
}
// 促使 Launch Services 刷新缓存
execFileSync('touch', [join(dirname(plist), '..')])
console.log(`[patch-electron] 开发态应用名 → ${APP_NAME}`)

View File

@@ -0,0 +1,39 @@
/**
* 加载项目根目录 .env 后启动 electron-builder不覆盖已有环境变量
*/
import { existsSync, readFileSync } from 'fs'
import { spawnSync } from 'child_process'
import { dirname, join } from 'path'
import { fileURLToPath } from 'url'
const root = join(dirname(fileURLToPath(import.meta.url)), '..')
const envPath = join(root, '.env')
if (existsSync(envPath)) {
for (const raw of readFileSync(envPath, 'utf8').split(/\r?\n/)) {
const line = raw.trim()
if (!line || line.startsWith('#')) continue
const eq = line.indexOf('=')
if (eq <= 0) continue
const key = line.slice(0, eq).trim()
let val = line.slice(eq + 1).trim()
if (
(val.startsWith('"') && val.endsWith('"')) ||
(val.startsWith("'") && val.endsWith("'"))
) {
val = val.slice(1, -1)
}
if (process.env[key] === undefined) process.env[key] = val
}
console.log('[env] loaded', envPath)
} else {
console.warn('[env] 未找到 .env公证需要 APPLE_ID / APPLE_APP_SPECIFIC_PASSWORD / APPLE_TEAM_ID')
}
const cli = join(root, 'node_modules/electron-builder/cli.js')
const r = spawnSync(process.execPath, [cli, ...process.argv.slice(2)], {
stdio: 'inherit',
env: process.env,
cwd: root
})
process.exit(r.status ?? 1)