以编程方式安装支持自动更新的附加组件

Programatically install add-on supporting automatic updates

我正在开发一个桌面应用程序,它可以通过附加组件与某些 Mozilla 应用程序集成。我想为用户提供通过我的应用程序安装附加组件的选项,但我一直无法找到满足我要求的官方方式:

  1. 加载项安装后必须接收自动更新
  2. 应该不需要复杂的用户交互
  3. 该方法不得被 Mozilla 禁止(例如,不得导致列入黑名单)

是否有安装满足这些要求的附加组件的方法?


我考虑过但不满足这些要求的选项:

我 运行 在测试时遇到了一些与配置文件相关的错误,这个选项比我最初测试建议的要好:


¹ 就我而言,那是 Thunderbird;但如果可能的话,我也想为 Firefox 保留这个问题。

² 我不认为可以通过在我的应用程序中使用自定义选择加入对话框来解决这个问题,因为众所周知,Mozilla 会盲目地执行 Mozilla 定义的 "greater good" 策略(请参阅附加组件签名)。

虽然不是最佳解决方案,但额外的测试表明问题中提到的一种初始方法比我的初始测试建议的效果更好:

将 XPI 复制到所有受影响的配置文件的 extension 文件夹中,使用文件名 ID.xpi,其中 ID 是添加的 ID-打开(如果附加组件需要解压缩,请将其解压缩到 ID 文件夹中)。

这将在禁用状态下安装附加组件,但在下次应用程序启动时会询问用户是否 he/she 希望允许安装。用户确认后,插件将被启用。


我欢迎解决此解决方案问题的其他答案:

  • 在某些情况下要求用户确认的选项卡会显示在后台(例如在 Thunderbird 中,如果加载项选项卡在重新启动前关闭时是前台选项卡)
  • 安装程序因此需要逻辑来解析 profiles.ini 以确定配置文件文件夹位置
  • 只有安装时的配置文件可能会受到影响