fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-04-25
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1115点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
阅读:1906回复:5

[Nightly] Firefox 63.0a 降级安装旧版本可能会导致扩展数据丢失

楼主#
更多 发布于:2018-08-07 09:28
Firefox 的 WE 扩展的 storage.local API 在 Firefox 63.0 Nightly 中已使用新的后端,即从 JSON 迁移到性能更好的 indexedDB 存储格式。这样就造成了一个问题,由于使用新的存储格式,一旦用户使用相同的配置覆盖安装 Firefox 62.0 和更低的版本,则旧版本无法识别新的 WE 扩展存储格式,造成 WE 扩展存储的设置等数据无法恢复,用户感受上就是可能会遇到扩展设置等数据丢失的问题。


这个迁移是默默运行的,一般用户不会感受到有什么变化。是否迁移可以在 about:config 里面查看以下参数:

extensions.webextensions.ExtensionStorageIDB.enabled,这个为 true,则已经开启迁移。
extensions.webextensions.ExtensionStorageIDB.migrated,里面会有一些扩展显示,后面附带扩展的 ID,如果为 true,则这个扩展存储已迁移为新的 indexedDB。有些扩展 ID 比较晦涩,可以在 about:support 的扩展版块里面查看名称和 ID 的对应关系。




如果想用同一配置文件并安装旧版本,又要恢复到迁移前的数据,Mozilla 也给出了恢复的方法:
1、在配置文件夹里面找到 browser-extension-data 文件夹,所有扩展的存储数据都在这里。
2、在对应的扩展的文件夹(扩展的 ID 可通过上面方法查看)里面可以看到 storage.js.migrated 或 storage.js.migrate.N(这个 N 表示迁移了几次),这个文件就是迁移后的扩展数据存储文件。
3、备份好,然后将该文件改名为 storage.js
4、打开开发工具里面的浏览器控制台(Ctrl-Shift-J)。
5、重新安装一遍扩展。
6、等待控制台里面出现 “Migrating storage.local data for <扩展 debug 名>”以及“storage.local data successfully migrated to IDB Backend for <扩展 debug 名>”出现,则恢复成功。

扩展的数据已经又存储在配置文件夹的 storage\default\moz-extension+++扩展 ID 目录下面,idx 文件夹里面,sqlite 文件。


https://blog.mozilla.org/addons/2018/08/03/new-backend-for-storage-local-api/

最新喜欢:

yfdyh000yfdyh0...
Firefox More than meets your experience
yfdyh000
千年狐狸
千年狐狸
  • UID29079
  • 注册日期2009-06-07
  • 最后登录2022-05-18
  • 发帖数2262
  • 经验1390枚
  • 威望0点
  • 贡献值52点
  • 好评度139点
  • 社区居民
  • 最爱沙发
  • 忠实会员
1楼#
发布于:2018-08-07 09:43
恢复方法有点问题和含糊。

总的来说是:关闭浏览器,将有数据的storage.js.migrated改回storage.js,用Firefox 63以前的版本正常使用。Firefox 63及以后的版本默认 extensions.webextensions.ExtensionStorageIDB.enabled=true,会将数据自动迁移到idb(配置文件\storage\default\moz-extension+++扩展ID... 目录下)并更名storage.js文件。

“打开开发工具里面的浏览器控制台”只是看迁移日志(英文),非必要。
“重新安装一遍扩展”含糊、可能不正确。博客原文是卸载扩展、复制、打开浏览器控制台、重新 安装扩展、看迁移日志。
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-04-25
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1115点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
2楼#
发布于:2018-08-07 09:46
yfdyh000:恢复方法有点问题和含糊。


总的来说是:关闭浏览器,将有数据的storage.js.migrated改回storage.js,用Firefox 63以前的版本正常使用。Firefox 63及以后的版本默认 extensions.webext...
回到原帖
应该改名,重装一遍扩展就可以了,改名是改成原格式,然后重装目的是让扩展重新检测并应用这个原格式。查看迁移日志非必要,但最好也看看,有可能迁移失败,日志就会显示。


上面方法是针对已经覆盖安装了旧版本再操作,如果是打算先改再安装旧版本的话,除了上面步骤,还要将about:config 里面的参数,改成 false,关闭自动迁移,然后再覆盖安装,防止期间又迁移了。
Firefox More than meets your experience
yfdyh000
千年狐狸
千年狐狸
  • UID29079
  • 注册日期2009-06-07
  • 最后登录2022-05-18
  • 发帖数2262
  • 经验1390枚
  • 威望0点
  • 贡献值52点
  • 好评度139点
  • 社区居民
  • 最爱沙发
  • 忠实会员
3楼#
发布于:2018-08-07 11:29
fang5566:应该改名,重装一遍扩展就可以了,改名是改成原格式,然后重装目的是让扩展重新检测并应用这个原格式。查看迁移日志非必要,但最好也看看,有可能迁移失败,日志就会显示。


上面方法是针对已经覆盖安装了旧版本再操作,如果是打算先改再安装旧版本...
回到原帖
还要“改成 false”没想到。我的理解是同一个扩展不会二次迁移,因为有 extensions.webextensions.ExtensionStorageIDB.migrated 系列。
extensions.webextensions.ExtensionStorageIDB.enabled 换到旧版是否会自动改还没试过,感觉应该会随着默认值自动变。
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-04-25
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1115点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
4楼#
发布于:2018-08-07 11:40
yfdyh000:还要“改成 false”没想到。我的理解是同一个扩展不会二次迁移,因为有 extensions.webextensions.ExtensionStorageIDB.migrated 系列。
extensions.webextensions....
回到原帖
嗯,我想也不会迁移了。毕竟 extensions.webextensions.ExtensionStorageIDB.migrated 系列 true 表示已经迁移,然后 63 又已经去读取 idx 数据库,那 storage.js 只是遗留下来为了能实现回退而已。extensions.webextensions.ExtensionStorageIDB.enabled 在 63 等旧版肯定不会生效的。
Firefox More than meets your experience
marb
非常火狐
非常火狐
  • UID56238
  • 注册日期2017-12-25
  • 最后登录2023-04-12
  • 发帖数894
  • 经验1041枚
  • 威望0点
  • 贡献值1150点
  • 好评度50点
5楼#
发布于:2018-08-07 17:18
还是别用night版了,有个别扩展会滞后,给自己找麻烦
游客

返回顶部