我正在使用松鼠在我的Electron应用程序中实现自动更新。下载更新后,我向用户显示一个对话框,为他们提供两个选项:
- 退出应用程序并立即安装更新(使用
autoUpdater.quitAndInstall()
) - 暂时搁置更新并在下次应用程序启动时安装它
选项1 - 相当和安装现在工作正常,但我无法让选项 2 - 在下次应用程序启动时安装 - 工作。
所需的行为是,如果用户选择稍后安装,则下次启动应用时会立即安装更新。
在我的应用程序中,我处理自动更新程序update-downloaded
事件。我还在应用程序启动时调用了checkForUpdates
。我假设如果忽略更新,那么当应用程序下次启动时,对checkForUpdates
的调用将导致松鼠注意到现有下载,发出update-downloaded
事件,用户将再次被询问是否要安装更新。但是,不会发出update-downloaded
事件。
其次,如果用户选择稍后安装,我会向userData
文件写入一个标志,告诉应用在下次启动应用时调用autoUpdater.quitAndInstall
。这会产生错误,因为此方法只能在发出update-downloaded
后调用。
那么我怎样才能让它工作呢?我是否需要以某种方式删除现有下载,以便在下次启动应用程序时再次下载?这似乎不对。
当应用像这样启动时调用autoUpdater.checkForUpdates();
:
autoUpdater.addListener("update-downloaded", function () {
if (userData flag) {
autoUpdater.quitAndInstall();
}
});
autoUpdater.setFeedURL('autoUpdaterFeedUrl');
autoUpdater.checkForUpdates();