当我删除调试版本时,如何防止 Firefox 删除我的扩展数据?

How to prevent Firefox from removing my extension's data when I remove debug version?

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

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

使用索引数据库(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. 转到 "Tags" 页面并创建任何标签(写一些东西然后按 Enter)
  4. 在 about:addons 页面上禁用此扩展程序
  5. 克隆其存储库并签出以提交 id 在清单中的位置 git clone https://github.com/DevAlone/tagit.git; git checkout 8e0d04201865fd7b7543b167279a045c89408d5c
  6. 安装依赖项并构建npm install; npm run build
  7. 在about:debugging页
  8. 上安装临时扩展(build目录)
  9. 删除about:debugging页面上的临时扩展
  10. 在 about:addons 页面上启用正常扩展
  11. 再次转到“标签”页面可以看到数据库不见了

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

you can prevent the browser from clearing local storage on uninstall by visiting "about:config" and setting the following two browser preferences to true: "keepUuidOnUninstall" and "keepStorageOnUninstall". This feature is provided to help developers test their extensions. Extensions themselves are not able to change these preferences.