我花了很多时间寻找一种简单的方法来开发Firefox扩展程序,但是我仍然无法创建扩展程序。请告诉我Firefox扩展程序的文件结构以及安装扩展程序的简单方法。
我花了很多时间寻找一种简单的方法来开发Firefox扩展程序,但是我仍然无法创建扩展程序。请告诉我Firefox扩展程序的文件结构以及安装扩展程序的简单方法。
.xpi
文件格式 (扩展打包).xpi
文件被用作Mozilla(Firefox,Thunderbird等)扩展的容器,它们实际上是zip归档文件,只是将文件扩展名更改为.xpi
并使用“deflate”压缩或未压缩来添加文件到归档中。如果您使用除“deflate”或“store”(未压缩)之外的任何其他类型的压缩,则会出现错误,例如:
This add-on cannot be installed because it appears to be corrupted
这些文件直接位于压缩包的根目录下(即没有一个空的第一级目录来包含这些文件)。
归档文件的内容可以是几个文件到任意数量的文件。必须包含的文件取决于您要打包的插件类型。如果您计划使用Add-on SDK,则可能不需要了解这些文件的格式,因为使用jpm
工具抽象了其中的大部分内容。如果您不知道我在说什么,您可能需要阅读有关不同类型的Firefox附加组件(WebExtensions, Add-on SDK, Bootstrap/Restartless, and Overlay/Legacy/XUL)。
最基本的,你需要一个描述扩展的manifest.json文件。你几乎肯定还会有其他的文件。在其他类型的附加组件中使用的chrome.manifest、install.rdf和package.json文件,在WebExtension附加组件中是不使用的。你不应该有那些文件。
jpm xpi
来创建。Add-on SDK扩展在package.json文件中描述。当你运行jpm xpi
时,你的插件被翻译成为Bootstrap/Restartless插件。这是通过将package.json文件翻译成install.rdf,创建chrome.manifest文件并向JavaScript添加一些包装器来完成的。除非这样做对你的插件功能必不可少(这种情况相当罕见),否则你不应该尝试自行执行此过程。
Archive contains:
bootstrap.js
chrome/
chrome/content/
chrome/content/options.xul
chrome/skin/
chrome/skin/printer-typeC128.png
chrome/skin/printer-typeC32.png
chrome/skin/printer-typeC48.png
chrome/skin/printer-typeC64.png
chrome.manifest
install.rdf
license.txt
Total 12 entries (42360 bytes)
.png
文件是该扩展在各种分辨率下的图标。您可以使用任何方法来创建.zip文件,然后将其重命名为.xpi。请注意,仅支持“deflate”压缩方法,但也可以将文件添加到未压缩的存档中。您的顶级文件(例如,manifest.json(WebExtensions)或其他所有文件:chrome.manifest和install.rdf)应位于存档的根目录中,而不是子目录中。
我使用一个批处理文件来创建.xpi
文件,该文件使用DOS和Unix / Linux(实际上是Cygwin)命令的组合:
mkxpi.bat:
rm -f PrintButtonIsPrint@makyen.foo.xpi
zip -1 -r PrintButtonIsPrint@makyen.foo.xpi * -x@xpi.ignore
pause
.xpi
文件。然后使用-1
进行最小化压缩(访问速度比节省空间更重要),强制只存储未压缩或使用“deflate”的文件来创建一个新的.xpi
文件。新的.xpi将包含所有文件和子目录*
,但忽略xpi.ignore文本文件中的所有文件(-x@xpi.ignore
)。忽略文件是因为我在目录中有其他东西(例如.git
目录,从编辑器自动创建的.bak
文件等)。一旦创建了.xpi
文件,脚本就会执行pause
,以便我可以验证包含哪些文件,是否有错误等,而不是让窗口消失并假设一切都好。
我的xpi.ignore文件有点长,因为它积累了各种项目的垃圾,并且很少清理:
*.com
*.class
*.dll
*.exe
*.o
*.so
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.log
*.sql
*.sqlite
*.svg
*/.DS_Store
*/.DS_Store?
*/._*
._*
*/.Spotlight-V100
.Spotlight-V100
*/.Trashes
.Trashes
*/ehthumbs.db
*/Thumbs.db
*.ORIG
*.bak
*OLD*
OLD/*
*/OLD/*
*.OLD
*.OLD[0-9]
*/OLD/*
*/OLD[0-9]/*
*.unknown
*.unknown[0-9]
*.updated
*.updated[0-9]
*/Copy *
*/OLD
*/OLD*
*/OLD[0-9]
*/OLD[0-9][0-9]
*/test/*
*/not in xpi/*
*/tmp
*.tmp
*/foo
*.foo
*checkpoint
.git
*/.git
.gitignore
*/.gitignore
xpi.ignore
mkclean.bat
mkclean.bat.DONTRUN
mkxpi.bat
*.xpi
*/devtools-toolbox-window.ico
*/devtools-webconsole.ico
*/JSConsoleWindow.ico
*/main-window.ico
*/places.ico
*/viewSource.ico
作为普通扩展:
要将扩展作为普通附加组件安装到 Firefox 的品牌版或 Beta 版中,必须由 Mozilla 进行签名。这通过提交至 AMO完成。您可以通过在about:config
中将 xpinstall.signatures.required
设置为 false
,将未签名的扩展作为普通附加组件安装到其他版本的 Firefox(例如 Firefox Developer Edition,Firefox Nightly,Unbranded Beta 或 Unbranded Release)中。
安装扩展程序(即.xpi
文件)可以简单地将其拖放到运行所需安装的Firefox配置文件窗口中。对于开发/测试,您可以使用Firefox扩展代理文件将扩展程序放在本地驱动器上的目录中(在Bootstrap/Restartless和Overlay/Legacy的install.rdf中以<em:id>
命名的文件中,将该文件放在配置文件的extensions目录中,其中包含一行完整路径,指向包含扩展程序文件的目录)。根据您的目标(一个配置文件、所有配置文件、所有用户、哪个操作系统等),还有其他选项可供安装扩展程序。
要将扩展作为临时安装,请导航到about:debugging
。从该页面,点击“加载临时添加组件”,然后导航弹出窗口到适当的文件夹,并选择一个.xpi文件或目录中的任何文件。如果您选择的是一个除.xpi文件之外的文件,则假定该目录包含未打包的附加组件文件,这些文件将被自动识别。
npm install --global web-ext
web-ext sign --api-key=$AMO_JWT_ISSUER --api-secret=$AMO_JWT_SECRET
其中$AMO_JWT_IUSSER和$AMO_JWT_SECRET是您在上一步中生成的密钥。