我正在开发一个桌面应用程序,该应用程序可以通过附加组件与某些Mozilla应用程序进行集成。我想为用户提供通过我的应用程序安装附加组件的选项,但我一直无法找到满足我要求的官方方式:
- 加载项一旦安装,必须接收自动更新
- 不需要复杂的用户交互
- Mozilla不得禁止该方法(如中所述,不得导致列入黑名单)
是否有一种方法可以安装满足这些要求的附加组件
我考虑过的不满足这些要求的选项:
- 全局安装外接程序-但是,这不允许通过AMO的基础设施或install.rdf中的
updateURL
自动更新(违反1) - 将XPI复制到默认配置文件中并启用它不会导致"选择加入"对话框出现,这违反了附加组件指南,因此会被列入黑名单²(违反3)
- 使用XPI的URL执行应用程序–仅适用于带有浏览器组件的应用程序,如Firefox,但不适用于Thunderbird
我在测试时遇到了一些与配置文件相关的错误,这个选项比我最初测试建议的要好:
- 将XPI复制到默认配置文件中–导致加载项在禁用状态下启动,
对我来说,那就是雷鸟;但如果可能的话,我也愿意为Firefox保留这个问题。
²我不认为在我的应用程序中使用自定义的选择加入对话框可以解决这个问题,因为众所周知,Mozilla会盲目地执行Mozilla定义的"更大利益"的政策(请参阅附加签名)。
虽然不是最佳解决方案,但额外的测试表明,问题中提到的一种初始方法比我的初始测试建议的效果更好:
使用文件名ID.xpi
将XPI复制到所有受影响配置文件的extension
文件夹中,其中ID
是加载项的id(如果加载项需要拆包,请将其拆包到ID
文件夹中)
这将在禁用状态下安装加载项,但在下一次应用程序启动时,将询问用户是否希望允许安装。用户确认后,加载项将被启用。
我欢迎解决此解决方案问题的其他答案:
- 在某些情况下,请求用户确认的选项卡会显示在后台(例如,在Thunderbird中,如果在重新启动前关闭时附加选项卡是前台选项卡)
- 因此,安装程序需要解析
profiles.ini
的逻辑,以便确定配置文件文件夹的位置 - 只有安装时的配置文件可能会受到影响