3

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

  1. 退出应用程序并立即安装更新(使用autoUpdater.quitAndInstall()
  2. 暂时搁置更新,下次应用启动时安装

选项 1 - 相当并安装现在工作正常,但我无法让选项 2 - 在下次应用程序启动时安装 - 工作。

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

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

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

那么我怎样才能让它工作呢?我是否需要以某种方式删除现有下载,以便在下次启动应用程序时再次下载?这似乎不对。

4

1 回答 1

0

应用程序启动时调用autoUpdater.checkForUpdates();如下:

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

autoUpdater.setFeedURL('autoUpdaterFeedUrl');
autoUpdater.checkForUpdates();
于 2017-05-20T10:11:06.697 回答