如何在 Linux 上实现自动更新电子应用程序?

How to implement auto-update electron app on Linux?

我使用 electron 创建跨平台应用程序。对于 Windows 和 Mac 可以通过 electron 工具来完成,例如 autoUpdate、Squirrel 等。

只有 Linux 有问题。我为 Ubuntu 构建了一个 .deb 包。但我找不到任何 "step-by-step" 说明或有关它的综合信息。

我不熟悉 java,也没有为 Linux 创建应用程序的经验。

所以主要问题是:

  1. 使用分发包管理器的标准自动更新过程是什么?谁应该下载并安装更新并重新启动应用程序。
  2. 还有什么方法可以解决这个问题。创建自定义更新的最佳做法是什么?
  3. .deb、.rpm 包有什么区别以及Ubuntu 和 Fedora 有什么区别?

所有信息都会有帮助,即使是它(信息)也不会与电子应用程序相关。

*nix 世界中确实没有标准。您将始终必须支持特定的发行版,而这些发行版中的每一个又可以有多种创建自动更新程序的可能方法。

针对您的问题:

  1. 没有标准的方法。

  2. 这取决于您实际分发包的方式。如果您计划使用像 rpm/apt-get/apt install 这样的包管理器,那么这些管理器中的每一个都有一种特定的方式来配置您的应用程序,使其成为检查自动更新的包之一。

  3. .rpm / .deb 的区别:

    Main difference for a package maintainer (I think that would be 'developer' in Debian lingo) is the way package meta-data and accompanying scripts come together. Link

    Ubuntu 和 Fedora 之间的差异:由于创建关于此问题的详细答案既太长又维护起来太费力,请查看 this blog post 详细说明这两个发行版之间的差异。

Jens 的回答真的是最好的。

但是如果你不想花时间学习 RPM 和 DEB 以及为所有发行版构建包,那么你可以考虑使用 Flatpak 打包你的应用程序。 http://flatpak.org/#about

它创建了一个大存档,可以 运行 在 Ubuntu、RHEL.... 无处不在。

如果 AppImage 格式适合您的项目,您可以尝试 electron-simple-updater

应用图片

您可以使用 electron-builder 创建 Appimages to install or auto-update you application almost in any Linux distribution

AppImage is a universal software package format. By packaging the software in AppImage, the developer provides just one file ‘to rule them all’. End user, i.e. you, can use it in most (if not all) modern Linux distributions

如果您想要 auto-update 您的应用程序,您还需要 electron-autoupdater。目标:

  • MacOS:DMG。
  • Linux:AppImage
  • Windows:NSIS

您可以找到使用此 here. The important files: package.json, updater.js, updater_renderer.js

的项目示例

使用其中一些说明,您可以创建安装程序:

yarn electron-builder --linux --x64
yarn dist_linux                        # shortcut in package.json

deb, rpm

您可以使用 electron-builder 创建 deb 或 rpm 等软件包,但要自动更新它们取决于您如何分发它们,正如 Jens 在他的回答中所说的那样。最终用户可能需要添加 apt 存储库以保持最新