电子更新程序会通知新版本,但不会在Windows中更新或下载新版本

时间:2020-01-21 09:00:16

标签: electron nsis electron-updater

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

这是github上的私有存储库

新版本成功发送到github

release 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;

我从auto updater

得到记录

可自动更新的目标是 windows nsis

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

如果您已经有经验,请告诉我

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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