我是一名高级用户,有一些程序员技能,但我已经安装了一些firefox插件,我想在原始代码中添加一些额外的代码行。但我只有.xpi文件。
我知道它可以被任何zip实用程序打开。但当我在里面换东西的时候,它就不起作用了。它将.js文件存储在CONTENT文件夹中。有一个输出到文件的函数,我想格式化一个正在保存到文件中的字符串。
您可以不提问题的开头,但有一个主要目标和问题:如何重新编译或应用对已安装.xpi扩展中的.js文件的任何更改?任何升级它们的方法。
附加组件:
url记录器
http请求记录器
本质上,您只需再次压缩内容(非SDK插件(。您链接的那些加载项是非SDK加载项。
但是也有一些陷阱:
- 扩展名可能已进行了数字签名,如存在
META-INF
文件夹所示。修改内容当然会使签名无效。只需删除文件夹即可使(修改后的(扩展名再次未签名 - 很多时候,人们实际上会把外层文件夹拉上拉链。即,所得到的zip(
.xpi
(然后包含/some-addon-folder/install.rdf
而不仅仅是/install.rdf
。请确保不要压缩外部文件夹,只压缩其中的文件和子文件夹 - 一些zip工具生成的zip文件本质上是损坏的;破坏到足以被Firefox拒绝,但没有破坏到足以让其他zip实用程序破坏。确保zip有效,如果有疑问,请切换您使用的zip实用程序
- 还记得实际压缩东西,而不是7zip、rar、tar.gz或其他什么。(
这是正确的压缩:
$ unzip -l http_request_logger-0.1-fx.xpi
Archive: http_request_logger-0.1-fx.xpi
Length Date Time Name
-------- ---- ---- ----
240 07-29-11 11:45 chrome.manifest
0 07-29-11 11:42 components/
1558 07-29-11 11:47 components/httpRequestLogger.js
1021 07-30-11 12:39 install.rdf
-------- -------
2819 4 files
这没有正确压缩(通过使用OSX压缩菜单项产生(:
$ unzip -l http_request_logger-0.1-fx.zip
Archive: http_request_logger-0.1-fx.zip
Length Date Time Name
-------- ---- ---- ----
0 05-16-14 01:54 http_request_logger-0.1-fx/
240 07-29-11 11:45 http_request_logger-0.1-fx/chrome.manifest
0 05-16-14 01:54 __MACOSX/
0 05-16-14 01:54 __MACOSX/http_request_logger-0.1-fx/
187 07-29-11 11:45 __MACOSX/http_request_logger-0.1-fx/._chrome.manifest
0 07-29-11 11:42 http_request_logger-0.1-fx/components/
1558 07-29-11 11:47 http_request_logger-0.1-fx/components/httpRequestLogger.js
0 05-16-14 01:54 __MACOSX/http_request_logger-0.1-fx/components/
187 07-29-11 11:47 __MACOSX/http_request_logger-0.1-fx/components/._httpRequestLogger.js
1021 07-30-11 12:39 http_request_logger-0.1-fx/install.rdf
187 07-30-11 12:39 __MACOSX/http_request_logger-0.1-fx/._install.rdf
187 05-16-14 01:54 __MACOSX/._http_request_logger-0.1-fx
-------- -------
3567 12 files
(除了__MACOSX
垃圾,现在是http_request_logger-0.1-fx/install.rdf
(
我建议你也阅读设置扩展开发环境,特别是关于代理文件的部分。(
当涉及到SDK加载项时(如harness-options.json
文件所示(,重新压缩可能有效,也可能无效。最好只复制一个基于.xpi
内容的package.json和目录结构,并使用SDK cfx
工具构建一个新的XPI。