本文档详细介绍了为 Draw.io Desktop 应用程序创建 macOS 和 Linux 发行版的构建流程。它涵盖了配置选项、构建目标、特定于平台的先决条件(如 macOS 公证)以及用于自动化构建的持续集成管道。有关特定于 Windows 的构建信息,请参阅 Windows Builds。
Draw.io Desktop 使用 electron-builder 为 macOS 和 Linux 平台打包应用程序。构建配置主要在特定于平台的 JSON 文件中定义,并通过 GitHub Actions 工作流实现构建过程的自动化。
来源:electron-builder-linux-mac.json electron-builder-snap.json .github/workflows/electron-builder.yml build/notarize.mjs
macOS 构建过程会创建可分发包,并处理 Apple 特有的安全要求,包括代码签名和公证。
Draw.io Desktop 同时构建 Intel (x64) 和 Apple Silicon (arm64) 处理器版本,还提供一个通用的二进制文件,可在两种架构上运行。
来源:electron-builder-linux-mac.json17-36
Apple 要求应用在分发给用户之前必须进行签名和公证。这项安全措施有助于保护用户免受恶意软件侵害。
公证过程由 notarize.mjs 脚本处理,该脚本在 electron-builder 配置中被指定为 afterSign 钩子。
来源:electron-builder-linux-mac.json17-22 build/notarize.mjs
{
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist",
"category": "public.app-category.graphics-design"
}
这些设置启用了 Apple 所需的安全功能
hardenedRuntime:启用 Apple 的强化运行时安全功能entitlements:指定应用程序的权限category:将应用程序分类到 macOS App Store 中来源:electron-builder-linux-mac.json17-22
Linux 构建过程会生成多种包格式,以支持不同的 Linux 发行版包管理器。
来源:electron-builder-linux-mac.json41-62 electron-builder-snap.json14-22
Linux 包包含特定的元数据,以便与桌面环境正确集成
{
"executableName": "drawio",
"category": "Graphics",
"maintainer": "JGraph <support@draw.io>",
"icon": "./build"
}
RPM 包包含额外的参数,以满足 Red Hat 的打包要求
"rpm": {
"fpm": [
"--rpm-rpmbuild-define=_build_id_links none",
"--rpm-digest=sha256"
]
}
来源:electron-builder-linux-mac.json41-45 electron-builder-linux-mac.json64-69
Snap 包提供了一种容器化的应用程序格式,具有对系统资源的受控访问。Draw.io Desktop 的 Snap 包配置为可以访问
"snap": {
"plugs": [
"default",
"removable-media"
]
}
来源:electron-builder-snap.json23-28
自动化构建过程在 GitHub Actions 上运行,并在推送版本标签时触发。
来源:.github/workflows/electron-builder.yml
GitHub Actions 工作流在 Ubuntu 和 macOS 运行器上运行
对于 Linux 构建,会安装额外的依赖项
sudo apt-get update && sudo apt-get install -y icnsutils graphicsmagick xz-utils rpm
对于两个平台,工作流都会设置用于代码签名和公证的环境变量
来源:.github/workflows/electron-builder.yml10-25 .github/workflows/electron-builder.yml62-63
构建过程遵循以下步骤
sync.js/sync.cjs)electron-builder 构建包yarn run sync
yarn run release-linux
对于 Linux 上的 Snap 包
sudo snap install snapcraft --classic
yarn run release-snap
snapcraft push --release edge dist/draw.io-amd64-*.snap
来源:.github/workflows/electron-builder.yml67-77
macOS 和 Linux 包都配置为与以下文件类型关联
| 扩展 | 描述 | MIME 类型 | 角色 |
|---|---|---|---|
| .drawio | draw.io 图 | application/vnd.jgraph.mxfile | 编辑器 |
| .vsdx | VSDX 文档 | application/vnd.visio | 编辑器 |
来源:electron-builder-linux-mac.json70-85 electron-builder-snap.json30-45
macOS 和 Linux 构建共享一些通用配置参数
这些设置定义了
来源:electron-builder-linux-mac.json1-16 electron-builder-snap.json1-13
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(f1ed8e)