我构建了一个Electron应用程序,现在我正在研究如何分发它。我和electron-builder一起去处理包装等。
对于一些上下文,作为Web开发人员,我习惯于在Web服务器上不断部署Web应用程序,但我很难弄清楚如何在Electron中分发打包的应用程序。
在electron-builder docs中,有一个关于测试自动更新的简短提及:
“请注意,为了在不打包应用程序的情况下开发/测试更新的UI / UX,您需要在项目的根目录中创建名为dev-app-update.yml的文件,该文件与电子构建器配置中的发布设置相匹配(但是以YAML格式)“
但是,它很模糊......
所以我实际上有两个问题:
1.我如何实际测试自动更新流程?
我是否需要实际发布新版本以在本地触发更新?似乎很不清楚,这就像开发生产服务器一样。
2.是否可以对未签名的代码进行回退?
我还没有任何代码签名证书。因此OS / app将阻止自动更新。但是,我仍然想告诉用户更新可用,以便他们可以手动下载应用程序。我能这样做吗? (回到第1点,我希望能够测试这个流程)
我刚刚完成了这个。我还想针对非生产服务器进行测试,避免每次迭代时都必须打包我的应用程序。为了测试下载量,我必须签署我的应用程序,这会减慢速度。但听起来你只需要检查更新。我认为你可以做如下......
我创建了一个虚拟github repo,然后创建了一个包含以下内容的文件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');
}
...这应该足以满足您的需求 - 因为您不需要下载。
如果没有,这里有一些其他提示:
checkForUpdates()
,但是如果checkForUpdatesAndNotify()
给你一个有用的操作系统通知,那么你应该能够将autoUpdater.autoDownload
设置为false并最终得到你需要的东西。最后,听起来你可以跳过autoUpdater
,因为你无论如何都不会使用下载功能。相反,您可以使用github's releases api,假设您使用github来托管您的版本。如果没有,那么你的主人应该有类似的东西。使用它来检查更新,然后从您的应用程序中告诉用户(也可以向他们显示可点击的URL)。如果你想要OS Notifications electron has a module for that。