Testing 如何测试electron builder自动更新流?

Testing 如何测试electron builder自动更新流?,testing,electron,auto-update,electron-builder,Testing,Electron,Auto Update,Electron Builder,我建立了一个电子应用程序,现在我正在研究如何分发它。 我去处理包装等 作为一名web开发人员,我习惯于在web服务器上连续部署web应用程序,但我很难弄清楚如何在Electron中分发打包的应用程序 中简要介绍了测试自动更新: 请注意,为了在不打包应用程序的情况下开发/测试更新的UI/UX,您需要在项目根目录中有一个名为dev-app-update.yml的文件,该文件与electron builder config中的发布设置相匹配(但采用YAML格式) 但是,它相当模糊 所以我实际上有两个问

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

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

中简要介绍了测试自动更新:

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

但是,它相当模糊

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

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

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

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


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

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

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

owner: <user or organization name>
repo: dev-auto-update-testing
provider: github
…这对于您的情况应该足够了--因为您不需要下载

如果没有,以下是一些其他提示:

  • 您可以在electron builder配置中更改repo设置,以指向虚拟repo,然后打包应用程序。这将给你一个打包的生产构建,指向你的虚拟回购——这就是我如何进行下载测试(尽管我有证书,并签署了我的应用程序)
  • 您应该调用autoUpdate的
    checkForUpdates()
    ,但是如果
    checkForUpdatesAndNotify()
    给您提供了一个有用的操作系统通知,那么您应该能够将
    autoUpdater.autoDownload
    设置为false,并得到所需的结果

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

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

在开发模式下测试更新的一种方法:

  • 创建具有任意高版本号的应用程序版本
  • 创建公共回购并发布上述构建
  • 在您的
    main
    入口点旁边创建一个
    dev-app-update.yml
    ,并将其配置为上述回购()
  • 在您的主要入口点:
从“电子更新程序”导入{autoUpdater};
...
if(process.env.NODE_env==“开发”){
//通过切换这些行来自定义测试
//autoUpdater.autoDownload=false
//autoUpdater.autoInstallOnAppQuit=false;
autoUpdater.checkForUpdates();
}
然后,当运行
Thread dev
时,您应该会看到如下内容:

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
检查更新
...
找到版本100.0.0(url:.exe)
从.exe下载更新
app-update.yml中未指定updaterCacheDirName是否至少使用electron builder 20.34.0构建应用程序?
更新程序缓存目录:C:\Users\\AppData\Local\Electron
新版本100.0.0已下载到C:\Users\\AppData\Local\Electron\pending\.exe
它应该在您关闭开发应用程序时安装


这应该给你一些确定性,但我们在生产中仍然遇到问题。如果您想确定,可以使用测试回购但打包的生产应用程序来完成完整的更新流程,就像使用live应用程序一样。

这方面有什么进展吗?我确实做了一些事情,但这需要一篇精心编辑的文章来提供一个好的答案。我一直在学习,因为我问这个。现在,你可能想看看这个:无论何时你弄明白了,你能回答一下你自己的问题吗?
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