Firefox附加组件安装过程的详细信息
我很好奇Firefox插件安装过程的内部工作原理。我注意到,当用户从addons.mozilla.org安装加载项时,会执行以下步骤:Firefox附加组件安装过程的详细信息,firefox,firefox-addon,Firefox,Firefox Addon,我很好奇Firefox插件安装过程的内部工作原理。我注意到,当用户从addons.mozilla.org安装加载项时,会执行以下步骤: 加载项已下载(可能在临时文件夹中) 弹出一个安装确认对话框(“安装来自您信任的作者的附加组件”) 单击“安装”后,该加载项将存储在/extensions/staged文件夹中。除了这个插件,还有一个类似这样的JSON文件:addon_id.JSON Firefox提示用户重新启动浏览器 重新启动后,/extensions/staged/文件夹中的内容将移动到/e
- Firefox源代码中的哪个代码部分负责第5步?我假设一些C++或JS代码或一些XPCcom模块负责确定在一个阶段/文件夹中安装一个附加程序,并执行必要的步骤(移动文件,注册附加程序等)。有人能告诉我那个模块/代码吗
- 加载项在下载时临时存储在何处(步骤1)
基本上,我希望在第1步下载加载项之后,但在它成为浏览器的一部分之前(第5步),修改一些文件。我想在Firefox源代码中添加此功能。您的分析基本上是正确的,它只遗漏了引导扩展。引导扩展不需要重新启动浏览器,它们将被移出
staged
目录并立即激活
插件管理器都是从Firefox4开始的JavaScript。重要的文件是(从web处理加载项安装的组件),(通用加载项管理API)和(XPI打包扩展的提供者)
extWebInstallListener.onWebInstallRequested()
通过一组AddonInstall
实例(在XPIInstall.jsm
中定义)调用,并为每个安装创建一个Installer
实例,该实例调用AddonInstall.install()
。下载进入由XPIProvider.jsm
中的getTemporaryFile()
确定的临时文件(操作系统特定临时目录中的tmp foo.xpi
)Installer.checkAllDownloaded()
确定所有下载都已完成,并显示一个模式确认对话框(URI\u XPINSTALL\u dialog
)AddonInstall.startInstall()
将加载项移动到临时目录中。之后将立即安装引导加载项。对于其他附加组件,继续执行步骤4oninstalled
侦听器被触发-其中一个侦听器显示需要重新启动浏览器的消息XPIProvider.startup()
调用XPIProvider.checkForChanges()
调用XPIProvider.processPendingFileChanges()
谢谢!这会让我忙上一段时间!