79 lines
3.2 KiB
JavaScript
79 lines
3.2 KiB
JavaScript
|
|
/**
|
|||
|
|
* electron-builder 打包配置
|
|||
|
|
* 用 JS 配置而不是 yml:mac 公证需要按「环境变量是否配齐」动态开关。
|
|||
|
|
*
|
|||
|
|
* 签名策略(按需求做成条件化,未配置证书时出未签名包且构建不报错):
|
|||
|
|
* - Windows / mac 代码签名:配置了 CSC_LINK + CSC_KEY_PASSWORD(或 mac 钥匙串里有
|
|||
|
|
* Developer ID 证书)时 electron-builder 自动签名;否则自动跳过,只输出告警
|
|||
|
|
* - mac 公证:APPLE_ID + APPLE_APP_SPECIFIC_PASSWORD + APPLE_TEAM_ID 三者齐全才启用
|
|||
|
|
* - 未签名 mac 包仍可内部分发:首次打开需右键「打开」,且自动更新会降级为提示手动下载
|
|||
|
|
*/
|
|||
|
|
const canNotarize = Boolean(
|
|||
|
|
process.env.APPLE_ID &&
|
|||
|
|
process.env.APPLE_APP_SPECIFIC_PASSWORD &&
|
|||
|
|
process.env.APPLE_TEAM_ID,
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
/** @type {import('electron-builder').Configuration} */
|
|||
|
|
const config = {
|
|||
|
|
// appId 必须与主进程 setAppUserModelId 一致,否则 Windows 系统通知不显示
|
|||
|
|
appId: 'com.xiaokang.xkadmin',
|
|||
|
|
productName: '萧康云医',
|
|||
|
|
// 安装包文件名用 ASCII,避免中文名在静态托管/下载链接上出编码问题
|
|||
|
|
artifactName: 'xk-desktop-${version}-${os}-${arch}.${ext}',
|
|||
|
|
directories: {
|
|||
|
|
output: 'release',
|
|||
|
|
buildResources: 'resources',
|
|||
|
|
},
|
|||
|
|
files: ['out/**'],
|
|||
|
|
extraResources: [
|
|||
|
|
// web-antd 生产构建产物:放 resources/web(不进 asar),为后续渲染层热更新留路
|
|||
|
|
{ from: '../web-antd/dist', to: 'web' },
|
|||
|
|
// 应用图标供运行时使用(托盘、Windows 窗口图标)
|
|||
|
|
{ from: 'resources/icon.png', to: 'icon.png' },
|
|||
|
|
],
|
|||
|
|
asar: true,
|
|||
|
|
compression: 'normal',
|
|||
|
|
win: {
|
|||
|
|
// TODO(待确认):正式图标待提供,当前用 web-antd logo 预生成的 ico 占位
|
|||
|
|
// 直接给 .ico 让 builder 跳过 png 转换(本机 builder 的 wasm 图标工具会报内存错误)
|
|||
|
|
icon: 'resources/icon.ico',
|
|||
|
|
target: [{ target: 'nsis', arch: ['x64'] }],
|
|||
|
|
},
|
|||
|
|
nsis: {
|
|||
|
|
// 非一键安装:允许用户选择安装目录,符合企业内部软件分发习惯
|
|||
|
|
oneClick: false,
|
|||
|
|
perMachine: false,
|
|||
|
|
allowToChangeInstallationDirectory: true,
|
|||
|
|
createDesktopShortcut: true,
|
|||
|
|
createStartMenuShortcut: true,
|
|||
|
|
shortcutName: '萧康云医',
|
|||
|
|
},
|
|||
|
|
mac: {
|
|||
|
|
icon: 'resources/icon.png',
|
|||
|
|
category: 'public.app-category.medical',
|
|||
|
|
// dmg 给用户安装,zip 是 electron-updater 在 mac 自动更新的必需格式,缺一不可
|
|||
|
|
target: [
|
|||
|
|
{ target: 'dmg', arch: ['x64', 'arm64'] },
|
|||
|
|
{ target: 'zip', arch: ['x64', 'arm64'] },
|
|||
|
|
],
|
|||
|
|
hardenedRuntime: true,
|
|||
|
|
gatekeeperAssess: false,
|
|||
|
|
entitlements: 'resources/entitlements.mac.plist',
|
|||
|
|
entitlementsInherit: 'resources/entitlements.mac.plist',
|
|||
|
|
// IM 音视频通话必需的隐私用途描述,缺失时 mac 上调用摄像头/麦克风直接崩溃
|
|||
|
|
extendInfo: {
|
|||
|
|
NSCameraUsageDescription: '视频问诊需要使用摄像头',
|
|||
|
|
NSMicrophoneUsageDescription: '语音/视频通话需要使用麦克风',
|
|||
|
|
},
|
|||
|
|
notarize: canNotarize,
|
|||
|
|
},
|
|||
|
|
publish: {
|
|||
|
|
provider: 'generic',
|
|||
|
|
// TODO(待确认):更新包静态托管地址,需与主进程 config.ts 的 DOWNLOAD_PAGE_URL 保持一致
|
|||
|
|
url: 'https://static.xiaokang88.com/xk-desktop/',
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
module.exports = config;
|