我很好奇Firefox附加安装程序的内部工作原理。我注意到当用户从addons.mozilla.org安装加载项时会发生以下步骤:
我想知道的是:
基本上,我想在步骤1下载加载项之后但在它成为浏览器的一部分之前更改一些文件(步骤5)。我想在Firefox源代码中添加此功能。
答案 0 :(得分:2)
您的分析大多是正确的,它只是省略了自举扩展。 Bootstrapped扩展不需要重新启动浏览器,它们将被移出staged
目录并立即激活。
Add-on Manager是从Firefox 4开始的所有JavaScript。重要文件是amWebInstallListener.js(处理来自Web的附加安装的组件),AddonManager.jsm(通用附加组件管理) API)和XPIProvider.jsm(XPI打包扩展的提供程序)。
extWebInstallListener.onWebInstallRequested()
个实例(在AddonInstall
中定义)调用XPIInstall.jsm
并创建一个Installer
实例,为每个安装调用AddonInstall.install()
。下载进入getTemporaryFile()
XPIProvider.jsm
确定的临时文件({1}}(特定于操作系统的临时目录中为tmp-foo.xpi
)。Installer.checkAllDownloaded()
确定所有下载完成并显示模式确认对话框(URI_XPINSTALL_DIALOG
)。AddonInstall.startInstall()
将加载项移动到临时目录中。之后将立即安装Bootstrapped加载项。对于其他附加组件,它将继续执行第4步。onInstallEnded
侦听器被触发 - 其中一个显示浏览器需要重新启动的消息。XPIProvider.startup()
拨打XPIProvider.checkForChanges()
来电XPIProvider.processPendingFileChanges()
。