以编程方式安装支持自动更新的加载项

时间:2016-07-19 22:51:32

标签: firefox firefox-addon thunderbird thunderbird-addon amo

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

  1. 加载项一旦安装,必须接收自动更新
  2. 不应该有复杂的用户交互
  3. Mozilla不得禁止此方法(因为,不得导致黑名单)
  4. 是否有方法安装满足这些要求的附加组件?

    我考虑的选项,不符合这些要求:

    • Global installation of add-ons - 但是,这不允许通过AMO的基础架构进行自动更新,也不允许在install.rdf中updateURL进行自动更新(违反1)
    • 将XPI复制到默认配置文件并启用它 - 不会导致选择加入对话框显示,这是一个violation of the Add-on Guidelines因此是黑名单的票证(违反3)
    • 使用XPI的URL执行应用程序 - 仅适用于具有浏览器组件的应用程序,例如Firefox,但不适用于Thunderbird

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

    • 将XPI复制到默认配置文件中 - 导致加载项在禁用状态下启动,因此无法告诉用户手动下载扩展(违反2)和用户将被要求在新标签中允许(或拒绝)安装(遗憾的是,此标签有时在后台打开,因此对条件2不是最佳的)

    ¹在我的情况下,那就是雷鸟;但是如果可能的话,我也想为Firefox打开这个问题。

    ²我不认为可以通过在我的应用程序中使用自定义选择加入对话框来解决问题,因为已知Mozilla会盲目地执行Mozilla定义的“更好”的策略(请参阅加载项签名)。

1 个答案:

答案 0 :(得分:0)

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

使用文件名extension将XPI复制到受影响的所有配置文件的ID.xpi文件夹中,其中ID是附加组件的ID(如果加载项需要解压缩,然后将其解压缩到ID文件夹中。

这会将加载项安装在禁用状态,但会在下一个应用程序启动时询问用户是否允许安装。用户确认后,将启用加载项。

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

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