首页 > 解决方案 > 当我删除调试版本时,如何防止 Firefox 删除我的扩展数据?

问题描述

我在清单中有一个带有 id 设置的扩展,如下所示:

"browser_specific_settings": {
    "gecko": {
      "id": "{e3ec45ef-43ba-499d-8469-6d0e2f06921f}",
      "strict_min_version": "42.0"
    }
  },

它使用 indexedDB(PouchDB)。我从 addons.mozilla.org 安装了该扩展,禁用,安装了用于开发的临时版本,并且每次我仅删除临时版本时,Firefox 都会删除两个扩展的数据(因为它们具有相同的 id)。

当我没有在清单中设置 id 时不会发生这种情况(在这种情况下,临时版本具有随机 id),但这不是解决方案,因为某些 API 和 Android 版本的 Firefox 需要手动设置 id

当我临时删除一个时,如何防止Firefox删除正常扩展的数据?

以防万一有人想重现该问题:

  1. 安装这个扩展https://addons.mozilla.org/en-US/firefox/addon/tagit/?src=search
  2. 转到扩展程序的页面(浏览器面板上带有眼睛的按钮)
  3. 转到“标签”页面并创建任何标签(写一些东西并按 Enter)
  4. 在 about:addons 页面上禁用此扩展
  5. 克隆其存储库并签出以提交 id 在清单中的位置git clone https://github.com/DevAlone/tagit.git; git checkout 8e0d04201865fd7b7543b167279a045c89408d5c
  6. 安装依赖项并构建npm install; npm run build
  7. build在 about:debugging 页面上安装该临时扩展(目录)
  8. 删除 about:debugging 页面上的临时扩展
  9. 在 about:addons 页面上启用普通扩展
  10. 再次进入标签页面,查看数据库已消失

标签: firefoxpouchdbbrowser-extension

解决方案


这是解决方案https://support.mozilla.org/en-US/questions/1270250#answer-1257518

您可以通过访问“about:config”并将以下两个浏览器首选项设置为 true 来防止浏览器在卸载时清除本地存储:“keepUuidOnUninstall”和“keepStorageOnUninstall”。提供此功能是为了帮助开发人员测试他们的扩展。扩展程序本身无法更改这些首选项。


推荐阅读