如何保存下载的更新以便稍后安装?

时间:2017-05-16 23:04:35

标签: javascript electron squirrel.windows

我正在使用squirrel在我的Electron应用程序中实现autoupdate。下载更新后,我向用户显示一个对话框,为他们提供两个选项:

  1. 退出应用并立即安装更新(使用autoUpdater.quitAndInstall()
  2. 暂时撤消更新并在下次启动应用时安装
  3. 选项1 - 相当安装现在工作正常,但我无法获得选项2 - 在下次应用启动时安装 - 工作。

    理想的行为是,如果用户选择稍后安装,则会在下次启动应用时立即安装更新。

    在我的应用中,我处理autoUpdater update-downloaded事件。应用程序启动时我也调用了checkForUpdates。我假设如果更新被忽略,那么当下次启动应用程序时,对checkForUpdates的调用将导致松鼠注意到现有的下载,发出update-downloaded事件并再次询问用户是否想要安装更新。但是,不会发出update-downloaded事件。

    其次,如果用户稍后选择安装,我会在userData文件上写下一个标记,告诉应用下次启动应用时调用autoUpdater.quitAndInstall。这会产生错误,因为只有在update-downloaded发出后才能调用此方法。

    那我怎么能让它发挥作用呢?我是否需要以某种方式删除现有下载,以便在下次启动应用时再次下载?这看起来不对。

1 个答案:

答案 0 :(得分:0)

当应用启动时调用autoUpdater.checkForUpdates();

autoUpdater.addListener("update-downloaded", function () {
    if (userData flag) {
        autoUpdater.quitAndInstall();
    }
});

autoUpdater.setFeedURL('autoUpdaterFeedUrl');
autoUpdater.checkForUpdates();