首页 > 解决方案 > 如何测试电子生成器自动更新流程?

问题描述

我构建了一个 Electron 应用程序,现在我正在研究如何分发它。我和电子制造商一起去处理包装等。

对于一些上下文,作为一名 Web 开发人员,我习惯于在 Web 服务器上持续部署 Web 应用程序,但我很难弄清楚如何在 Electron 中分发打包的应用程序。

electron-builder docs中有一个关于测试自动更新的简短提及:

“请注意,为了在不打包应用程序的情况下开发/测试更新的 UI/UX,您需要在项目的根目录中有一个名为 dev-app-update.yml 的文件,该文件与您在电子构建器配置中的发布设置相匹配(但采用 YAML 格式)"

但是,比较模糊...

所以我实际上有两个问题:

1. 如何实际测试自动更新流程?

我是否需要实际发布新版本才能在本地触发更新?似乎很不清楚,这就像针对生产服务器进行开发一样。

2. 是否可以对未签名代码进行回退?

我还没有任何代码签名证书。因此操作系统/应用程序将阻止自动更新。但是,我仍然想告诉用户有可用的更新,以便他们可以手动下载该应用程序。我可以这样做吗?(回到第 1 点,我希望能够测试这个流程)

标签: testingelectronauto-updateelectron-builder

解决方案


我刚刚处理完这件事。我还想针对非生产服务器进行测试,避免每次迭代时都打包我的应用程序。为了测试下载,我必须签署我的应用程序,这减慢了速度。但听起来你只需要检查更新。我认为您可以执行以下操作...

我创建了一个虚拟 github 存储库,然后创建了一个包含以下内容的文件dev-app-update.yml

owner: <user or organization name>
repo: dev-auto-update-testing
provider: github

该文件的路径默认为您无法访问的位置。幸运的是,您可以像这样覆盖它:

    if (isDev) {
      // Useful for some dev/debugging tasks, but download can
      // not be validated becuase dev app is not signed
      autoUpdater.updateConfigPath = path.join(__dirname, 'dev-app-update.yml');
    }

...这对于您的情况应该足够了——因为您不需要下载。

如果没有,这里有一些其他提示:

  • 您可以更改电子构建器配置中的存储库设置以指向您的虚拟存储库,然后打包您的应用程序。这将为您提供一个打包的生产版本,指向您的虚拟仓库——这就是我进行下载测试的方式(尽管我有一个证书,并签署了我的应用程序)
  • 你应该调用 autoUpdate's checkForUpdates(),但如果checkForUpdatesAndNotify()给你一个有用的操作系统通知,那么你应该能够设置autoUpdater.autoDownload为 false 并最终得到你需要的东西。

最后,听起来您可以跳过autoUpdater,因为无论如何您都不会使用下载功能。相反,您可以使用github 的发布 api,假设您使用 github 来托管您的发布。如果没有,那么您的主机应该有类似的东西。使用它来检查更新,然后从您的应用程序中告诉用户(也可以向他们展示可点击的 URL)。如果你想要操作系统通知,电子有一个模块


推荐阅读