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