我建立了一个电子应用程序,我现在正在研究如何分发它。我和电子生成器一起去处理包装等。
对于一些上下文,作为一个web开发人员,我习惯于在web服务器上不断地部署web应用程序,但我很难弄清楚如何在电子中分发打包的应用程序。
在电子建筑商文档中,有一个关于测试自动更新的简短介绍:
请注意,为了开发/测试不打包更新应用程序的UI/UX,需要在项目根目录中有一个名为dev-app-update.yml的文件,该文件与来自电子构建器配置的发布设置(但以YAML格式)相匹配。
但是,它相当模糊..。
所以我有两个问题:
1.如何实际测试自动更新流?
我是否需要实际发布一个新版本来触发本地更新?看起来很不清楚,这就像针对生产服务器进行开发一样。
2.对无符号代码有退路的可能性吗?
我还没有任何代码签名的证书。因此OS/app将阻止自动更新。但是,我还是想告诉用户,更新是可用的,这样他们就可以手动下载应用程序了。我能这么做吗?(回到第一点,我希望能够测试这个流)
发布于 2019-04-13 05:56:18
我刚处理完这个。我还想在非生产服务器上进行测试,避免每次迭代时都要打包我的应用程序。为了测试下载,我必须在我的应用程序上签名,这会减慢下载速度。但听起来你只是需要检查一下更新。我想你可以这样做。
我创建了一个虚拟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');
}...that对于你的情况应该足够了--因为你不需要下载。
如果没有,以下是一些其他建议:
checkForUpdates(),但是如果checkForUpdatesAndNotify()给了您一个有用的OS通知,那么您应该能够将autoUpdater.autoDownload设置为false并得到所需的结果。最后,听起来您可以跳过autoUpdater,因为您无论如何都不会使用下载功能。相反,您可以使用github发布api,假设您使用github托管您的发行版。如果没有,那么您的主机应该有类似的东西。使用它来检查更新,然后告诉用户在你的应用程序中(也可以提供一个可点击的URL )。如果您想要OS通知,电子有一个模块。
发布于 2020-10-25 14:41:15
我们使用electron-updater和GitHub作为自动更新的提供者。不幸的是,它破坏了很多,electron-builder团队并不很好地支持这些问题(1、2、3.) (根据我自己的经验,但是您可以在GitHub上找到更多的例子)。
在dev模式下测试更新的一种方法是:
dev-app-update.yml入口点旁边创建一个main,并将其配置为上面的回购(看见)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时,您应该会看到如下内容:
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应用程序时,应该安装它。
这应该会给你一些确定性,但我们在生产中仍然遇到一些问题。如果你想确定,在整个更新流程中使用一个测试回购,但打包的生产应用程序,就像你要做的活一个。
https://stackoverflow.com/questions/51003995
复制相似问题