记一次macOS的自动更新问题
JiaoXin2005 10/20/2021 JavaScript
# 背景
使用electron-updater
进行自动更新时,调用quitAndInstall
的 api 之后,并没有自动安装并重启
# 排查
- 通过日志发现 zip 包的下载已经完成
- 查看 Squirrel.Mac 的日志,一般在
~/Library/Caches/com.xxxx.ShipIt/ShipIt_stderr.log
下,发现主进程并么有退出
# 解决办法
在下载完成之后,手动退出主进程
import { autoUpdater } from "electron-updater";
import { app, autoUpdater as nativeAutoUpdater } from "electron";
/* 重启应用并安装 */
ipcMain.on("updater-app@quitAndInstall", () => {
app.removeAllListeners("before-quit");
app.removeAllListeners("window-all-closed");
autoUpdater.quitAndInstall();
nativeAutoUpdater.once("before-quit-for-update", () => {
/* 监听electron的autoUpdater的事件,手动退出应用 */
app.exit();
});
});
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13