如何测试电子生成器自动更新流程?

Kev*_*Kev 8 testing auto-update electron electron-builder

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

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

电子建设者文档中,有一个关于测试自动更新的简短提及:

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

但是,它相当含糊......

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

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

我是否需要实际发布新版本以在本地触发更新?似乎很不清楚,这就像开发生产服务器一样.

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

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

小智 5

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

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

owner: <user or organization name>
repo: dev-auto-update-testing
provider: github
Run Code Online (Sandbox Code Playgroud)

此文件的预期路径默认为您无法访问的位置。值得庆幸的是,您可以像这样覆盖它:

    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');
    }
Run Code Online (Sandbox Code Playgroud)

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

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

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

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