我构建了一个Electron应用程序,现在正在研究如何分发它。 我和electron-builder一起去包装等。
在某种程度上,作为一名Web开发人员,我习惯于在Web服务器上连续部署Web应用程序,但是我很难弄清楚如何在Electron中分发打包的应用程序。
在electron-builder docs中,有关于测试自动更新的简短说明:
“请注意,为了开发/测试更新的UI / UX而不打包应用程序,您需要在项目的根目录中有一个名为dev-app-update.yml的文件,该文件与您从electronic-构建器配置(但采用YAML格式)”
但是,这很模糊...
所以我实际上有两个问题:
1。我实际上如何测试自动更新流程?
我是否需要实际发布新版本以在本地触发更新?似乎还不清楚,就像在生产服务器上开发一样。
2。可以对未签名的代码进行后备吗?
我还没有任何代码签名证书。因此,操作系统/应用程序将阻止自动更新。但是,我仍然想告诉用户有可用的更新,以便他们可以手动下载该应用程序。我可以这样做吗? (回到第一点,我希望能够测试此流程)
答案 0 :(得分:0)
我刚刚处理完了。我还想针对非生产服务器进行测试,避免每次迭代时都打包应用程序。要测试下载,我必须对我的应用进行签名,这会减慢速度。但是听起来您只需要检查更新即可。我认为您可以执行以下操作...
我创建了一个虚拟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');
}
...这足以满足您的情况-因为您不需要下载。
如果没有,这里还有其他提示:
checkForUpdates()
,但是如果checkForUpdatesAndNotify()
为您提供了有用的OS通知,那么您应该能够将autoUpdater.autoDownload
设置为false并得到所需的内容。 / li>
最后,听起来您可以跳过autoUpdater
,因为无论如何您都不会使用下载功能。相反,您可以使用github's releases api,假设您使用github来托管发布。如果没有,那么您的主机应该有类似的东西。使用它来检查更新,然后从您的应用程序内告诉用户(也可以向他们显示可点击的网址)。如果您想要操作系统通知electron has a module for that。
答案 1 :(得分:0)
我们将electron-updater
与GitHub一起用作自动更新的提供者。不幸的是,它破裂了很多,electron-builder
团队对这些问题(1,2,3)的支持不佳(根据我的经验,但您可以找到GitHub上的更多示例)。
在开发人员模式下测试更新的一种方法:
dev-app-update.yml
入口点旁边创建一个main
,并为上面的仓库(see)配置它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
它应该在您关闭开发应用程序时安装。
这应该给您确定性,但是我们在生产中仍然遇到问题。如果您想确定的话,请像测试实时应用程序一样,通过测试存储库打包整个生产流程,并打包生产应用程序。