记一次macOS的自动更新问题

10/20/2021 JavaScript

# 背景

使用electron-updater进行自动更新时,调用quitAndInstall的 api 之后,并没有自动安装并重启

# 排查

  1. 通过日志发现 zip 包的下载已经完成
  2. 查看 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
Last Updated: 2/21/2022, 11:35:56 AM