Published on

Electron 应用打包、签名和更新指南

Authors
  • Name
    Twitter

本指南将帮助你完成 Electron 应用的打包、签名和更新过程,确保你的应用能够安全地分发给用户并保持最新状态。

1. 打包

打包是将你的 Electron 应用转换为可分发的格式的过程。

使用 electron-builder

electron-builder 是一个功能强大的打包工具。

安装

npm install electron-builder --save-dev

配置

package.json 中添加配置:

{
  "build": {
    "appId": "com.yourcompany.yourappname",
    "productName": "Your App Name",
    "mac": {
      "category": "public.app-category.utilities"
    },
    "win": {
      "target": ["nsis", "msi"]
    },
    "linux": {
      "target": ["deb", "rpm", "AppImage"]
    }
  }
}

运行打包命令

npx electron-builder

2. 代码签名

代码签名可以证明你的应用未被篡改,并提高用户信任度。

macOS 代码签名

  1. 获取 Apple Developer ID 证书
  2. package.json 中配置签名:
{
  "build": {
    "mac": {
      "identity": "Developer ID Application: Your Name (TEAM_ID)"
    }
  }
}

Windows 代码签名

  1. 获取 Windows 代码签名证书
  2. package.json 中配置签名:
{
  "build": {
    "win": {
      "certificateFile": "path/to/certificate.pfx",
      "certificatePassword": "your-password"
    }
  }
}

3. 自动更新

实现自动更新可以确保用户始终使用最新版本的应用。

使用 electron-updater

  1. 安装 electron-updater:
npm install electron-updater
  1. 在主进程中实现更新逻辑:
const { app, autoUpdater } = require('electron');
const { AppUpdater } = require('electron-updater');

app.on('ready', () => {
  const updater = new AppUpdater();
  updater.checkForUpdatesAndNotify();
});
  1. 配置更新服务器:

package.json 中添加:

{
  "build": {
    "publish": [{
      "provider": "generic",
      "url": "https://your-update-server.com/updates"
    }]
  }
}

4. 发布流程

  1. 更新版本号:

    npm version patch  # 或 minor, 或 major
    
  2. 构建应用:

    npx electron-builder
    
  3. 创建 GitHub Release 或上传到你的更新服务器

  4. 通知用户更新(通过 electron-updater 自动完成)

5. 最佳实践

  1. 版本控制:使用语义化版本控制 (Semantic Versioning)
  2. 更新日志:维护清晰的更新日志,让用户了解每次更新的内容
  3. 增量更新:考虑实现增量更新以减少更新包的大小
  4. 回滚机制:实现更新回滚功能,以应对更新失败的情况
  5. 测试:在发布前全面测试打包后的应用
  6. 自动化:使用 CI/CD 工具自动化打包和发布流程

6. 常见问题解决

  1. 签名失败:确保证书有效且密码正确
  2. 更新失败:检查更新服务器配置和网络连接
  3. 打包错误:查看 electron-builder 的输出日志,解决依赖问题

通过遵循这个指南,你应该能够顺利完成 Electron 应用的打包、签名和更新过程。记住,保持应用更新不仅可以为用户提供新功能,还能及时修复安全漏洞,对应用的长期成功至关重要。