我有自己的服务器,该服务器通过FTP上传了应用安装程序。名称为quickmargo Setup 1.0.0.exe
,可从
https://quickmargo.pl/dist/download/quickmargo设置1.0.0.exe
我还通过FTP将latest.yml
上传到了同一目录,并且可以在
https://quickmargo.pl/dist/download/latest.yml
在我的index.js项目中,
import { autoUpdater } from 'electron-updater'
autoUpdater.setFeedURL('https://quickmargo.pl/dist/download');
autoUpdater.on('update-downloaded', () => {
autoUpdater.quitAndInstall()
});
autoUpdater.on('update-available', (ev, info) => {
alert('Update required!');
});
app.on('ready', async () => {
if (process.env.NODE_ENV === 'production') {
await autoUpdater.checkForUpdates()
}
});
在package.json中,我有"version": "1.0.0",
,在build:{}
中,我有:
"win": {
"icon": "build/icons/icon.ico",
"publish": [{
"provider": "generic",
"url": "https://quickmargo.pl/dist/download"
}]
},
(我不在乎其他平台)
现在让我们说我已经对我的应用程序进行了一些更改,并且我想上传版本1.0.1,并且如果有人已经下载了安装程序并将其安装在自己的计算机上,我希望我的应用程序自动更新。
请告诉我我到目前为止所做的一切都很好以及下一步是什么。我考虑如下:
version
更改为1.0.1
修改
我完成了上述三个步骤,另外还上传了新的Latest.yml(版本1.0.1),结果是当我现在在其他PC上运行先前安装的版本(将新版本上传到服务器之前)1.0.0时,不会检测到我向服务器添加了1.0.1,也没有更新或显示任何弹出窗口或其他内容。我在做什么错了?
编辑2
我正在尝试自己解决它,现在我上传了1.0.2,所以现在下载应用程序的链接是:
https://quickmargo.pl/dist/download/quickmargo设置1.0.2.exe
编辑3
我试图自己解决问题,我在index.js中编辑了代码。我也在上面编辑过。 alert('Update required!');
事件中的update-available
从未发生。它应显示错误消息窗口,提示未定义警报。但是显然没有更新可用事件。
其他信息:
v1.0.6
样板生成的。4.1.2
npm run build
实际上从.electron-vue/build.js
中的样板中调用了一些代码,您可以在上面的链接中看到此文件(例如,它将NODE_ENV设置为production。package.json中的脚本为:{{1} }。答案 0 :(得分:5)
我能够在文档之后使用generic
的发布选项来设置自动更新配置,以前从未做过。因此它绝对可行,并且不需要通过证书进行签名,但是最初我遇到了问题,因为我在构建配置中设置了publisherName
,但是没有证书。如果当前版本指定了发布者或证书,而新版本未指定,则也不会安装。
1。启用日志记录
您还可以通过安装electron-updater
然后将记录器分配给electron-log
来启用autoUpdater
软件包的日志记录:
const log = require('electron-log');
autoUpdater.logger = log;
autoUpdater.logger.transports.file.level = 'info';
默认输出路径为:
~/.config/<app name>/log.log
~/Library/Logs/<app name>/log.log
%USERPROFILE%\AppData\Roaming\<app name>\log.log
如果以下步骤不能解决您的问题,请发布日志内容。
2。不要拨打autoUpdater.setFeedURL()
请勿致电setFeedURL。电子构建器会在
app-update.yml
的构建版本中自动为您创建resources
文件(此文件是内部文件,您无需了解它)。
该URL已经在您的publish
提供者对象中定义,足以供更新程序使用。另外,作为参数setFeedURL()
的URL字符串不正确,it should be an options object。但同样,只需在publish
提供程序中指定所有内容即可。
3。还将.blockmap
文件上传到您的服务器
除了设置.exe
文件外,还应在构建时创建这些文件。否则,您会在日志中看到错误,因为找不到旧版本和新版本的文件进行比较。
4。在您的更新服务器URL末尾添加斜杠
确保您的提供程序对象的url
参数以斜杠结尾。尽管可能没有yml文件,但是在实际下载过程中可能会出现问题。
5。使用autoUpdater.checkForUpdatesAndNotify()
与其使用更灵活,也更复杂的方式来监听不同的更新事件并在您的应用程序中对其做出反应,请尝试使其首先与以下代码一起使用。一旦成功,您仍然可以返回处理不同的事件,以获得更好的用户体验。
app.on('ready', async () => {
autoUpdater.checkForUpdatesAndNotify();
});
这将在后台检查并下载更新,并在您关闭应用程序后立即自动安装。将会弹出默认的Windows通知,以通知您有关可用更新和过程的信息。