文章目录
- 1. 现象
- 2. 分析并如何解决
- 3. 后续
1. 现象
在Mac电脑上,使用Electron Updater对程序进行更新,但是一直不成功,也不报错。具体表现是这样的:当前我的程序版本是3.11版本,点击更新之后,也下载了,但是更新之后还是3.11,也就是意味着更新不成功。
对于具体问题具体分析,这里我先贴一下我的更新代码:
function checkForUpdates() {
// 配置安装包远端服务器
autoUpdater.setFeedURL("update_url");
// 下面是自动更新的整个生命周期所发生的事件
// ------------start------------------
autoUpdater.on('error', (e, message) => {
sendUpdateMessage('error', message);
});
autoUpdater.on('checking-for-update', (e, message) => {
sendUpdateMessage('checking-for-update', message);
});
autoUpdater.on('update-available', (e, message) => {
sendUpdateMessage('update-available', message);
});
autoUpdater.on('update-not-available', (e, message) => {
sendUpdateMessage('update-not-available', message);
});
// 更新下载进度事件
autoUpdater.on('download-progress', (progressObj) => {
sendUpdateMessage('downloadProgress', progressObj);
});
// 更新下载完成事件
autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) => {
sendUpdateMessage('isUpdateNow');
ipcMain.on('updateNow', (e, arg) => {
//app退出并安装
autoUpdater.quitAndInstall()
});
});
// ------------start------------------
//执行自动更新检查
autoUpdater.checkForUpdates();
//自定义Logger,查看问题所在
autoUpdater.logger = {
info(message) {
builder += "info : " + message + "\n";
},
warn(message) {
builder += "warn : " + message + "\n";
},
error(message) {
builder += "error : " + message + "\n";
}
};
2. 分析并如何解决
在查阅了相关的资料就会发现,使用 electron 所打包的app,其实会存在各种日志,我们只需要查看日志,并按照日志,哪里出错就修改哪里即可。
日志的路径在哪里呢?首先你需要确定一下你的AppId,至于这个AppId,是需要你在package.json中配置的:
知道了这个AppId之后,就就可以查看以下目录:
/Users/user_name/Library/Caches/appId_name.Shiplit/ShipIt_stderr.log
看到的就是这种:
查看之后,就可以确定问题所在了。
ps:
我这边的问题是什么呢?主要是存在一个文件,它只是可读的权限,没有可写和可操作的权限。因此可以在终端,对这个文件进行
sudo chmod 777 target_file
然后重新打包,重试即可完成安装。
3. 后续
如果后续存在什么问题,可以根据这个log日志进行分析并逐步解决。如果你存在什么问题的话,可以加我v javainstalling,我们一起解决。