首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试电子建设者的自动更新流程?

如何测试电子建设者的自动更新流程?
EN

Stack Overflow用户
提问于 2018-06-23 18:29:00
回答 2查看 7.4K关注 0票数 18

我建立了一个电子应用程序,我现在正在研究如何分发它。我和电子生成器一起去处理包装等。

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

电子建筑商文档中,有一个关于测试自动更新的简短介绍:

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

但是,它相当模糊..。

所以我有两个问题:

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

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

2.对无符号代码有退路的可能性吗?

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

EN

回答 2

Stack Overflow用户

发布于 2019-04-13 05:56:18

我刚处理完这个。我还想在非生产服务器上进行测试,避免每次迭代时都要打包我的应用程序。为了测试下载,我必须在我的应用程序上签名,这会减慢下载速度。但听起来你只是需要检查一下更新。我想你可以这样做。

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

代码语言:javascript
复制
owner: <user or organization name>
repo: dev-auto-update-testing
provider: github

该文件的默认路径为无法访问的位置。谢天谢地,您可以这样重写它:

代码语言:javascript
复制
    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');
    }

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

如果没有,以下是一些其他建议:

  • 您可以更改电子构建器配置中的回购设置,以指向您的虚拟回购,然后打包您的应用程序。这将给你一个打包的,生产的构建点在你的虚拟回购-这是我如何做我的下载测试(虽然我有一个证书,并签署了我的应用)
  • 您应该调用autoUpdate的checkForUpdates(),但是如果checkForUpdatesAndNotify()给了您一个有用的OS通知,那么您应该能够将autoUpdater.autoDownload设置为false并得到所需的结果。

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

票数 7
EN

Stack Overflow用户

发布于 2020-10-25 14:41:15

我们使用electron-updater和GitHub作为自动更新的提供者。不幸的是,它破坏了很多,electron-builder团队并不很好地支持这些问题(123.) (根据我自己的经验,但是您可以在GitHub上找到更多的例子)。

在dev模式下测试更新的一种方法是:

  • 创建一个具有任意高版本号的应用程序。
  • 创建公共回购并发布上述构建
  • 在您的dev-app-update.yml入口点旁边创建一个main,并将其配置为上面的回购(看见)
  • 在你的主要入口点:
代码语言:javascript
复制
import { autoUpdater } from "electron-updater";

...

if (process.env.NODE_ENV === "development") {
  // Customize the test by toggling these lines
  // autoUpdater.autoDownload = false
  // autoUpdater.autoInstallOnAppQuit = false;

  autoUpdater.checkForUpdates();
}

那么,在运行yarn dev时,您应该会看到如下内容:

代码语言:javascript
复制
Checking for update
...
Found version 100.0.0 (url: <>.exe)
Downloading update from <>.exe
updaterCacheDirName is not specified in app-update.yml Was app build using at least electron-builder 20.34.0?
updater cache dir: C:\Users\<>\AppData\Local\Electron
New version 100.0.0 has been downloaded to C:\Users\<>\AppData\Local\Electron\pending\<>.exe

当您关闭dev应用程序时,应该安装它。

这应该会给你一些确定性,但我们在生产中仍然遇到一些问题。如果你想确定,在整个更新流程中使用一个测试回购,但打包的生产应用程序,就像你要做的活一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51003995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档