rou*_*ngh 3 firefox-addon google-chrome-extension firefox-addon-sdk firefox-addon-webextensions
我花了很多精力寻找一种简单的方法来开发 Firefox 扩展,但我无法创建扩展。请告诉我 Firefox 扩展的文件结构以及安装扩展的简单方法。
.xpi文件格式(扩展打包).xpi用作 Mozilla(Firefox、Thunderbird 等)扩展容器的文件只是 zip 存档,其文件扩展名已更改为,并且使用.xpi“deflate”压缩或未压缩将文件添加到存档中。如果您使用除“deflate”或“store”(未压缩)之外的任何其他类型的压缩,您将收到如下错误:
This add-on cannot be installed because it appears to be corrupted
Run Code Online (Sandbox Code Playgroud)
文件从 zip 压缩存档的根目录开始(即不存在包含文件的空第一级目录)。
存档的内容可以只是几个文件到任意数量的文件。必须包含的文件取决于您要打包的附加组件的类型。如果您计划使用Add-on SDK,那么您可能不需要知道这些文件的格式,因为其中大部分内容是使用该jpm工具抽象的。如果您不知道我在说什么,您可能需要阅读不同类型的Firefox 附加组件(WebExtensions、Add-on SDK、Bootstrap/Restartless和Overlay/Legacy/XUL)。
至少,您将拥有一个描述扩展的manifest.json文件。几乎可以肯定,您会有其他文件。其他类型的附加组件中使用的chrome.manifest 、 install.rdf 和 package.json文件不会在WebExtension附加组件中使用。您不应该拥有这些文件。
Firefox Add-on SDK 扩展的.xpi文件应通过执行来创建jpm xpi。附加 SDK 扩展在package.json文件中描述。当您运行时,jpm xpi您的附加组件将被转换为 Bootstrap/Restartless 附加组件。这是通过将package.json文件转换为install.rdf、创建chrome.manifest文件并向 JavaScript 添加一些包装器来完成的。您不应该尝试自己执行此过程,除非这样做对于您的附加组件的功能是必要的(这种情况非常罕见)。
您至少有install.rdf和chrome.manifest文件。Bootstrap/Restartless 附加组件还将有一个bootstrap.js文件。几乎总会有其他文件。这些类型的附加组件不使用 package.json ,也不使用manifest.json。
我非常简单的 Bootstrap/Restartless 扩展,Print Button is Print(将打印按钮更改为打印而不是打印预览),具有以下结构:
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)
Run Code Online (Sandbox Code Playgroud)
.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
Run Code Online (Sandbox Code Playgroud)
这将删除该文件的所有旧版本.xpi。然后.xpi,它使用-1最小压缩创建一个新文件(访问速度比节省空间更重要),这强制仅存储未压缩或使用“deflate”。新的.xpi将包含所有文件和子目录,但忽略xpi.ignore文本文件 ( )*中的所有文件。使用忽略文件是因为目录中还有其他内容(例如目录、从编辑器自动创建的文件等)。创建文件后,脚本就会执行,这样我就可以验证包含哪些文件、没有错误等,而不是仅仅让窗口消失并假设一切都很好。-x@xpi.ignore.git.bak.xpipause
我的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
Run Code Online (Sandbox Code Playgroud)
作为普通扩展:
为了将扩展作为普通附加组件安装到 Firefox 的品牌发布版或测试版中,它必须由 Mozilla 签名。这是通过将其提交给 AMO来完成的。您可以通过在 中设置为,将未签名的扩展作为普通附加组件安装到其他版本的 Firefox(例如Firefox Developer Edition、Firefox Nightly、Unbranded Beta 或 Unbranded Release)中。xpinstall.signatures.requiredfalseabout:config
如果您选择,在特定的 Firefox 安装中,您可以完全禁用附加签名要求。更多信息,您可以查看我的回答:How can I disable Signature Checking for Firefox add-ons?
安装扩展程序(即.xpi文件)非常简单,只需将其拖放到运行您希望安装它的配置文件的 Firefox 窗口即可。对于开发/测试,您可以使用Firefox 扩展代理文件(在配置文件的install.rdf<em:id>中为 Bootstrap/Restartless 和 Overlay/Legacy创建一个名为扩展的文件)将扩展放在本地驱动器的目录中。扩展目录包含一行,其中包含包含扩展文件的目录的完整路径)。根据您的目标(一个配置文件、所有配置文件、所有用户、哪个操作系统等),还有其他关于如何安装扩展的选项。
作为临时附加组件:
唯一不能作为临时附加组件安装的扩展类型是覆盖/旧版。此类扩展需要在安装后重新启动浏览器才能发挥作用。因此,它们不可能是暂时的。
要临时安装扩展,请导航至about:debugging。在该页面中,单击“加载临时加载项”,然后导航到弹出窗口到相应的文件夹并选择.xpi文件或目录中的任何文件。如果您选择.xpi文件以外的文件,则假定该目录包含将被自动识别的解压附加文件。
| 归档时间: |
|
| 查看次数: |
8409 次 |
| 最近记录: |