编辑现有的Firefox加载项

时间:2011-09-16 00:08:03

标签: firefox firefox-addon dom-inspector

对于我正在进行的其中一个项目,我必须使用DOM Inspector来调试Firefox扩展。

DOM检查器的问题在于它只向您显示代码下方的浏览器,无法分离浏览器或并排出代码部分或浏览器。

它对我不起作用,因为我正在调试的插件有一个大的xul叠加层,问题区域位于底部,所以没有物理方法可以看到该区域的代码以及区域本身。

所以我决定修改DOM Inspector本身,将浏览器放在代码编辑器的旁边。

以下是我采取的步骤:

  1. 从配置文件目录中获取现有的xpi文件。
  2. 将其改为拉链。
  3. 使用inspector.jar
  4. 进入内部并提取jar -xf <filename>
  5. inspectorOverlay.xul并将<vbox id="bxInspectorMain">更改为hbox。 (这应该足以将这两个窗口水平放置。)
  6. 然后我使用jar cf重新创建了jar文件。
  7. 压缩目录,确保名称相同,并将扩展名更改回xpi。
  8. 然而,当我尝试运行它时,我收到以下警告:

    Warning: WARN addons.xpi: Add-on is invalid: [Exception... "Component returned failure code: 0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST) [nsIZipReader.getInputStream]"  nsresult: "0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST)"  location: "JS frame :: resource://gre/modules/XPIProvider.jsm :: loadManifestFromZipReader :: line 740"  data: no]
    Source File: resource://gre/modules/XPIProvider.jsm
    Line: 740
    
    Warning: WARN addons.xpi: Could not uninstall invalid item from locked install location
    Source File: resource://gre/modules/XPIProvider.jsm
    Line: 2042
    

    我的问题是 - 我通常需要做些什么其他更改才能正确解释xpi?

2 个答案:

答案 0 :(得分:6)

  

压缩目录,确保名称相同,并将扩展名更改回xpi。

我猜你在这一步做错了。查看source code,消息来自方法updateMetadata() - Firefox注意到文件已更改并尝试再次读入install.rdf。该文件应位于XPI文件的顶层,但在您的情况下无法找到。重新打包文件后,install.rdf可能不再处于顶层。您可以使用unzip命令对其进行测试:

unzip -l inspector@mozilla.org.xpi

它应该显示XPI文件的内容,包括install.rdfchrome.manifest - 没有任何前置目录名。

答案 1 :(得分:3)

@Luka,我猜Wladimir Palant是对的。为了避免在修改现有项目的源代码时出错,我建议您在工作环境中工作。

修改源代码的建议方法:

  1. 安装Eclipse
  2. 安装Xul助推器(project / docs
  3. 从FF个人资料中提取您的错误代码。
  4. 检查您提取的.Zippy文件(FF扩展名)中确切给出的主文件夹和子文件夹的名称。
  5. 在XUL booster环境下在Eclipse中创建一个新项目:请使用FF扩展主文件夹和子文件夹的相同名称。
  6. 然后,将提取的文件复制到Eclipse中的XUL项目。
  7. 修改您的代码&amp;提取为.XPi文件并在FF浏览器中安装。
  8. 通过这种方式,您可以避免任何类型的错误,因为所有内容都会自动归类(Chrome文件夹,清单,install.rdf,已死亡等)。

    注意:有一种修改源代码的高级方法,FF浏览器会通过在FF扩展配置文件夹中设置环境来自动检测源代码的修改。

    1. 创建一个bat文件并找到项目文件夹路径,并在FF扩展配置文件文件夹中键入您的扩展ID。 (guide