如何在 electron.js 中修复“跳过 checkForUpdatesAndNotify,因为应用程序未打包”

Posted

技术标签:

【中文标题】如何在 electron.js 中修复“跳过 checkForUpdatesAndNotify,因为应用程序未打包”【英文标题】:How to fix "Skip checkForUpdatesAndNotify because application is not packed" in electron.js 【发布时间】:2019-06-06 09:52:20 【问题描述】:

我正在使用“electron-updater”来检查自动更新 Electron 应用程序。

调用“checkForUpdatesAndNotify()”函数。

在控制台中,我收到“跳过 checkForUpdatesAndNotify,因为应用程序未打包”。

mac0S 莫哈韦, “电子更新器”:“^4.0.6”, “电子”:“^3.0.13”,

“电子制造商”:“20.28.1”

    const autoUpdater = require("electron-updater");
    autoUpdater.checkForUpdatesAndNotify();

    autoUpdater.on('checking-for-update', () => 
      console.log('Checking for update...');
    );

    autoUpdater.on('update-available', (info) => 
      console.log('Update available.');
    );

    autoUpdater.on('update-not-available', (info) => 
      console.log('Update not available.');
    );

    autoUpdater.on('error', (err) => 
      console.log('Error in auto-updater. ' + err);
    );

    autoUpdater.on('download-progress', (progressObj) => 
      let log_message = "Download speed: " + progressObj.bytesPerSecond;
      log_message = log_message + ' - Downloaded ' + progressObj.percent + '%';
      log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')';
      console.log(log_message);
    );

    autoUpdater.on('update-downloaded', (info) => 
      console.log('Update downloaded');
    );

【问题讨论】:

您在哪个环境中面临这个问题,开发还是生产? 【参考方案1】:

checkForUpdatesAndNotify() 无法在开发模式下工作。

如果你坚持在开发模式下测试它,你可以用isPackaged做一些hack:

const app = require('electron').app;

Object.defineProperty(app, 'isPackaged', 
  get() 
    return true;
  
);

小心,不要将这个hack用于生产,它可能

【讨论】:

好招!非常感谢,它完美地完成了这项工作!【参考方案2】:

改用autoUpdater.checkForUpdates

【讨论】:

以上是关于如何在 electron.js 中修复“跳过 checkForUpdatesAndNotify,因为应用程序未打包”的主要内容,如果未能解决你的问题,请参考以下文章

如何调试写在 electron.js 文件中的脚本

Electron + xmpp.js:如何调试 SSL 自签名错误消息?

如何在 electron-vue js 中设置应用程序图标

如何在电子的生产版本上运行闪存?

如何将 Python + Electron JS 编译成桌面应用程序(exe)

Electron.js:需要远程模块不会让脚本工作