3

electron updater 4.2.0 包不下载新版本但可以检测到

这是github上的一个私有仓库

新版本成功发送到 github

发布github

package.json中:

"build": {
"appId": "com.myApp.ID",
"npmRebuild": false,
"win": {
  "icon": "./resources/electron/icons/256x256.png",
  "publish": [
    {
      "provider": "github",
      "owner": "me",
      "repo": "POS",
      "private": true,
      "releaseType": "release",
      "token": "<private token>"
    }
  ],
  "target": [
    {
      "target": "nsis",
      "arch": [
        "x64"
      ]
    }
  ]
}
},

我的 electron.js 文件或 main.js 我有:

  win.webContents.on('did-finish-load', () => {
    if(!serve) {
      appUpdater(win);
    }
  });

appUpdater函数是:

function appUpdater(win) {
  autoUpdater.autoInstallOnAppQuit = true;
  autoUpdater.autoDownload = true;
  autoUpdater.logger = logger;
  /* Log whats happening
  TODO send autoUpdater events to renderer so that we could console log it in developer tools
  You could alsoe use nslog or other logging to see what's happening */
  let foundUpdate = false;
  autoUpdater.on('checking-for-update', () => {
    dialog.showMessageBox(win, {
      message: 'CHECKING FOR UPDATES !!'
    });
  });
  autoUpdater.on('update-available', () => {
    foundUpdate = true;
    dialog.showMessageBox(win, {
      message: ' update-available !!'
    });
  });
  autoUpdater.on('error', error => {
    autoUpdater.logger.debug(error);
  });
  // Ask the user if update is available
  autoUpdater.on('update-downloaded', (_event, releaseNotes, _releaseName) => {
    let message = 'A new version is now available. It will be installed the next time you restart the application.';
    dialog.showMessageBox(win, {
      type: 'question',
      buttons: ['Install', 'Later'],
      defaultId: 0,
      message: 'A new version has been downloaded',
      detail: message
    }, response => {
      if(response === 0) {
        setTimeout(() => autoUpdater.quitAndInstall(), 1);
      }
    });
  });
  // init for updates
  setInterval(() => {
    if(!foundUpdate) {
      autoUpdater.checkForUpdates();
    }
  }, 60000);
}
exports.appUpdater = appUpdater;

我从自动更新程序中获得记录

可自动更新的目标是windows nsis

检查更新和更新可用事件正确触发,但更新下载或错误根本不会触发

如果您已经有这方面的经验,请告诉我

注意:我也在用户机器中设置了环境变量 GH_TOKEN

4

2 回答 2

0

现在总比以前好,因为 electron-builder@^20.38.0 给我带来了非常严重的错误,所以我正在为 mac bigSur 的新更新而苦苦挣扎!!!所以我决定更新到最新版本

electron: ^12.0.2
electron-builder: ^22.10.5
electron-updater: ^4.3.8

起初它没有工作给我这样的错误: 无法下载差异,回退到完整下载:错误:最大允许大小为 50 MB

最后我的节点版本在本地是 v10.15.1 我更新到 v14.16.0 现在它可以工作了!

使用其他版本更新和降级的另一个问题是下载它但安装失败。

于 2021-04-04T11:29:25.990 回答
0

电子生成器和电子更新器的某些特定版本也存在同样的问题。对我来说,它完全适用:

"electron-builder": "22.11.7"
"electron-updater": "4.3.8"

但例如,它不再适用于电子更新器 4.3.9 ...

于 2021-09-15T13:09:59.720 回答