
Antigravity Manager 从源码到发行包Electron Forge 多架构打包与自动更新实战【免费下载链接】AntigravityManagerAntigravity Manager is a powerful Electron-based application designed to manage accounts and processes for the Antigravity application. It provides a seamless interface for switching accounts, backing up progress, and controlling the application lifecycle.项目地址: https://gitcode.com/gh_mirrors/an/AntigravityManagerAntigravity Manager 是一款基于 Electron 的桌面应用管理工具提供账号切换、进度备份与应用生命周期管理功能。本文带你走读它的工程化实践如何用Electron Forge 多架构打包一套配置产出 Windows、macOS、Linux 三大平台的安装物并通过electron-updater 自动更新与 Semantic Release 完成从源码到发行包的完整闭环。 一套配置打天下Forge Vite 打包架构项目的构建骨架由 forge.config.ts 统一定义核心是三块配置配置项作用关键位置VitePlugin分别编译 main、preload、worker 与 renderer 四个目标forge.config.ts#L476-L506packagerConfigasar 打包、图标、原生模块解包forge.config.ts#L146-L157makers各平台安装物生成器forge.config.ts#L427-L458几个值得新手注意的工程细节原生模块处理项目依赖better-sqlite3、keytar等原生模块。asar 打包时通过unpack: **/{better-sqlite3,keytar}/**/*把它们排除在压缩包外再由AutoUnpackNativesPlugin统一处理保证跨平台二进制能正常加载。独立运行时预构建prePackage钩子会先执行prepare:standalone脚本为每个platform-arch组合构建独立 Node 运行时再塞入extraResource这是 Electron 桌面应用里少见的双运行时设计。安全加固FusesPlugin关闭RunAsNode、禁用NODE_OPTIONS并开启 asar 完整性校验只在start开发模式时跳过发布包全部生效。Windows 语言裁剪afterCopy钩子调用electron-packager-languages只保留en / zh-CN / ru等语言资源直接缩小安装包体积。日常开发只需要记住 package.json 里四条命令npm start # electron-forge start开发模式 npm run package # 仅打包不生成安装物 npm run make # 生成平台安装物 npm run publish # 发布到配置的渠道️ 多架构发行物统一命名 校验和 更新元数据真正让一次 make 产出所有架构变得可控的是postMake钩子里的一整套产物治理逻辑forge.config.ts#L226-L425统一命名所有安装物按格式重命名为规范文件名例如Antigravity.Manager_0.22.0_amd64.deb、Antigravity.Manager-0.22.0-win32-x64-setup.exe命名规则集中在 src/shared/packaging/artifactNames.ts连 RPM 的-1.${arch}版本号、deb 的_version_arch风格都做了区分。双哈希校验每个安装物同时计算SHA-512供 electron-updater 做完整性校验与SHA-256写入sha256sums-平台-架构.txt供用户手动校验与 Arch AUR 包使用。生成更新清单按平台/架构产出latest.yml、latest-mac.yml、latest-linux.yml等元数据文件供运行时轮询新版本。其中哪些文件进入更新清单并非一视同仁而是有精细策略src/shared/packaging/updateMetadata.tsWindows 上只有 Squirrel.exe参与自动更新MSI 是并行的手动升级通道其他平台则除 MSI 外全部纳入。 Windows 双通道自动更新NSIS SquirrelWindows 是桌面应用更新机制最复杂的平台。Antigravity Manager 的解法是双安装器 双更新源NSIS 通道用 electron-builder 单独构建一次性安装器electron-builder.config.cjs发布到generic静态文件源由 scripts/serve-local-update-feed.mjs 可在本地模拟该源做联调。Squirrel 通道MakerSquirrel 产出.exe与latest.yml增量更新清单配合electron-squirrel-startup处理升级事件。更新逻辑集中在 src/modules/app-shell/update/ 模块包含策略electronUpdaterPolicy.ts、下载进度、安装类型判定windowsNsisInstall.ts/windowsSquirrelInstall.ts与降级策略windowsUpdateFallbackPolicy.ts。当某个更新源不可用时应用会自动回退到另一通道并给出清晰提示而不是一次失败就失联。对新手来说最实用的验证方式是本地起一个更新源npm run make:nsis # 构建指定架构的 NSIS 安装器 npm run updater:serve-feed # 本地模拟更新 feed配合scripts/acceptance/installers/下的installed-msi-native.mjs、make-squirrel-update-fixture.mjs等脚本可以端到端验证旧版本 → 新版本的升级路径这也是项目验收测试的一部分。 发版流水线Semantic Release 驱动的版本与渠道同步版本号不是手改的而是由 release.config.cjs 中的 Semantic Release 配置自动推导feat→ minor 升级fix / perf / refactor→ patch 升级BREAKING CHANGE→ major 升级支持main稳定分支与beta预发布分支prerelease: true每次发版自动更新 CHANGELOG.md、package.json版本并在 GitHub Release 中附上合并的 PR 与贡献者列表。发版后还有一步渠道同步常被忽略包管理器里的 AUR 与 Homebrew 配方也要跟着更新。项目用 scripts/update-arch-release.mjs 从sha256sums文件中反查Antigravity.Manager_版本_amd64.deb的哈希自动改写 packaging/arch/PKGBUILD 的pkgver / pkgrel / sha256sums字段——同版本重打包时还会智能递增pkgrel保证 AUR 能正确触发更新。macOS 侧则通过 Homebrew tap 配方scripts/update-flake-release.mjs同族脚本同步 cask 版本。发布动作本身走electron-forge publishforge.config.ts#L459-L475 中配置的 GitHub publisher 会以draft 状态创建 Release人工核验产物无误后再手动公开是发布安全上很实用的小习惯。✅ 快速上手清单想做的事入口了解整体分层架构docs/architecture.md修改打包行为forge.config.ts调整产物命名 / 更新元数据src/shared/packaging/本地联调自动更新npm run updater:serve-feed查看多架构发行物设计动机openspec/changes/add-multiarch-release-artifacts/proposal.md验收测试含升级场景scripts/acceptance/installers/总结Antigravity Manager 的发行体系可以概括为三层——用 Forge 钩子把命名、哈希、更新清单三件脏活全部自动化用双安装器 双更新源覆盖 Windows 的各种升级场景再用 Semantic Release 与渠道同步脚本保证版本从 commit 到用户手中全链路一致。把这三个文件forge.config.ts、release.config.cjs、src/shared/packaging/读一遍你也就掌握了 Electron 桌面应用多架构打包与自动更新的完整方法论。【免费下载链接】AntigravityManagerAntigravity Manager is a powerful Electron-based application designed to manage accounts and processes for the Antigravity application. It provides a seamless interface for switching accounts, backing up progress, and controlling the application lifecycle.项目地址: https://gitcode.com/gh_mirrors/an/AntigravityManager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考