预检清单
- 我已经阅读了这个项目的 Contributing Guidelines 。
- 我同意遵循这个项目遵循的 Code of Conduct 。
- 我在问题跟踪器中搜索了一个与我想要提交的功能请求相匹配的问题,但没有成功。
问题描述
与 #24882 相关,我发现在运行 Electron 12 beta 并在同一配置文件下运行 Electron 11 时,会导致 indexeddb 数据被删除。
这不是一个要求支持降级的支持请求,因为如 #24882 所述,这是可以理解的,不可能实现。
然而,也许有一种方法可以让 Electron 在尝试加载较旧版本的配置文件时发出警告并提供回调函数,或者干脆拒绝加载?
建议的解决方案
也许 app(例如 app.warnOnMismatchProfileVersion
)上可以有一个方法,然后生成一个 unknown-profile-version
回调。默认情况下,如果回调没有被处理,加载将继续进行。
然而,如果应用程序希望在配置文件版本不匹配(可能来自较新的配置文件)时停止加载,它可以处理该事件,显示 dialog
并退出,或者给用户选择继续的权利。
这假设 Electron 能够检查配置文件版本,但也许这并不是这样。
考虑过的其他方案
实际上没有其他可能的方案,除了可能为不同版本的 Electron 维护不同的配置文件版本。
也许可以实现某种“通道”系统,有单独的发布、beta、alpha 等通道和每个通道的独立配置文件。然而,这仍然无法防止使用较新配置文件加载较旧版本时发生的自动数据丢失。
也许可以通过检查使用的 Chromium 版本来更好地在应用程序级别处理此问题?
附加信息
Electron 发布与 Chrome/Chromium有所不同。可能是出于设计原因,将其降级到较旧版本并不容易,特别是对于最终用户来说,因为谷歌通常只发布最新版本。
然而,这种情况在 Electron 中并非如此,因为经常有多个版本和一个处于测试阶段的 beta,从较旧的发布版本切换到较新的 beta 是很容易的,反之亦然。
对于最终用户来说,Electron 应用程序发布通常发布到 github,用户可以在尝试较新版本后选择安装较旧版本,而不意识到这样做可能导致不可逆的数据丢失。
也许还有一种我尚未了解的更简单的解决此问题的方法,即通过检查 Chromium 版本来实现,如果是这样,我很乐意尝试!
2条答案
按热度按时间nom7f22z1#
Chromium明确表示他们不支持降级,因此Electron支持的可能性很小。但我同意我们应该有一种方法至少警告用户降级以防止数据丢失。
5lhxktic2#
一种解决方法是将应用版本存储在用户数据的JSON文件中,如果应用的版本低于先前存储在用户数据中的版本,则拒绝打开。