Firefox addon 如何使用7Zip创建xpi文件?

Firefox addon 如何使用7Zip创建xpi文件?,firefox-addon,xpi,Firefox Addon,Xpi,我想将我的firefox扩展名打包为xpi文件。我尝试将其添加到存档并将其命名为filename.xpi 但当我尝试在firefox上安装它时,会收到“package corrupted”消息。有没有办法创建一个有效的xpi文件 我已经安装了cygwin并尝试执行zip命令来创建xpi文件。但Get-zip不是命令错误 有人能指导我完成吗?当使用7z打包扩展时,压缩到.zip,然后重命名为.xpi,不要压缩i如果您在windows上(要安装cygwin,看起来像这样),您可以使用windows内

我想将我的firefox扩展名打包为xpi文件。我尝试将其添加到存档并将其命名为filename.xpi

但当我尝试在firefox上安装它时,会收到“package corrupted”消息。有没有办法创建一个有效的xpi文件

我已经安装了cygwin并尝试执行zip命令来创建xpi文件。但Get-zip不是命令错误


有人能指导我完成吗?

当使用7z打包扩展时,压缩到.zip,然后重命名为.xpi,不要压缩i

如果您在windows上(要安装cygwin,看起来像这样),您可以使用windows内置工具:

  • 选择扩展的内容(记住,不要选择外部文件夹)
  • 右击
  • 寄往
  • 压缩(压缩)文件夹
  • 然后在文件名中替换.xpi的.zip

    看来你的问题在于完成第1点。正确地仅选择扩展的内容。不是包含它的文件夹

    因此,基本上您的zip文件应该具有以下结构:

    my_extension.zip
      |- install.rdf
      |- chrome.manifest
      |- <chrome>
    
    my_extension.zip
      |- <my_extension>
           |- install.rdf
           |- chrome.manifest
           |- <chrome>
    
    my_extension.zip
    |-install.rdf
    |-chrome.manifest
    |- 
    
    而不是这个结构:

    my_extension.zip
      |- install.rdf
      |- chrome.manifest
      |- <chrome>
    
    my_extension.zip
      |- <my_extension>
           |- install.rdf
           |- chrome.manifest
           |- <chrome>
    
    my_extension.zip
    |- 
    |-install.rdf
    |-chrome.manifest
    |- 
    
    另外,以下是我如何使用命令行为Firefox打包一个扩展的方法:

    cd/the/extension/folder/
    7z a../.xpi*-r
    
    (其中“a”表示“添加/创建”,“-r”表示递归)

    或者使用我们刚刚编辑的文件更新扩展名:

    cd /the/extension/folder/
    7z u ../<extension_name>.xpi * -r
    
    cd/the/extension/folder/
    7z u../.xpi*-r
    

    (“u”表示更新存档内容)

    使用7z时,请按照以下操作 仅选择内部内容,而不选择外部文件夹。 输入文件名为filename.xpi,并在压缩时出现的提示中选择存档格式为zip。 您将发现创建了一个有效的xpi文件。 使用创建的xpi在firefox上安装扩展。
    它起作用了

    只需压缩my_extension文件夹中的所有文件和文件夹,并将压缩后的文件扩展名更改为my_extension.xpi即可

    /my_extension
      |- defaults/
      |- locale/
      |- resources/
      |- install.rdf
      |- ... (other files and folders)
    
    安装从my_扩展文件夹的压缩文件创建的xpi文件将导致错误

    “无法安装此加载项,因为它似乎已损坏。”错误

    我今天遇到了相同的问题,发现错误是该加载项显然未经Mozilla签名,导致Firefox拒绝安装。直到最近,通过在
    about:config
    中将
    xpinstall.signatures.required
    设置为false,可以绕过此安全检查。但是,从Firefox 46开始,签名是强制性的,不再提供旁路,这意味着必须降级到以前的版本或使用非发布频道版本来测试自己的插件:(

    两种方法,使用GUI 7zFM.exe,或命令行或批处理文件

    1.0)GUI方法。假设7-Zip与shell集成一起安装,那么您将看到7-Zip显示在Windows资源管理器的上下文菜单(右键单击所选文件)中

    1.a)进入附加组件的文件夹

    1.b)选择要包含在.xpi中的所有文件和文件夹。假设在任何子文件夹中都没有要忽略的文件。如果这样做,可能需要使用命令行选项

    1.c)右键单击所选文件列表,找到
    7z
    图标,选择
    添加到存档…
    选项

    1.d)弹出一个对话框。编辑zip文件的位置和名称,将.zip改为.xpi,等等

    1.e)注意,如果您在同一文件夹中创建.xpi,以后不要重新存档,因为您的加载项将严重失败。你永远不会希望.xpi意外地出现在你的.xpi中。我通常只是在父文件夹中创建它,在文件名的开头添加
    。\
    ,例如
    。\addon-1.2.3-fx.xpi

    1.f)7-Zip有很多强大的压缩选项,Firefox无法处理所有这些选项。选择Firefox能够处理的设置。请参阅图片

    2.0)命令行方法。假设您在Windows中,并且知道如何打开命令提示符,请更改驱动器和目录(又称文件夹)

    2.a)
    CD
    到您的加载项目录

    2.b)使用最基本的7-Zip命令行

    “C:\Program Files\7-Zip\7z.exe”a-tzip加载项-1.2.3-fx.xpi*

    2.c)通过查找与上述GUI相对应的确切命令行选项,可以获得较小的文件,即:

    “C:\Program Files\7-Zip\7z.exe”a-tzip-mx=9-mm=Deflate-mfb=258-mmt=8“addon-1.2.3-fx.xpi”*

    请注意,使用Deflate压缩方法时,没有Dictionary size=32kb选项。否则,选项按顺序排列,并与GUI相对应

    |-----------------------|---------|--------------|
    | Option / Parameter    | GUI     | Command line |
    |-----------------------|---------|--------------|
    | Archive format        | zip     | -tzip        |
    | Compression level     | Ultra   | -mx=9        |
    | Compression method    | Deflate | -mm=Deflate  |
    | Dictionary size       | 32 KB   | (none)       |
    | Word size             | 258     | -mfb=258     |
    | Number of CPU threads | 8       | -mmt=8       |
    |-----------------------|---------|--------------|
    | Additional Parameters |         |              |
    |-----------------------|---------|--------------|
    | Recurse into Folders  | (none)  | -r           |
    | Multiple passes       | (none)  | -mpass=15    |
    | Preserve Timestamps   | (none)  | -mtc=on      |
    | Ignore files in list  |         | -x@{ignore}  |
    |-----------------------|---------|--------------|
    
    注:

    i) 多线程选项(-mmt=8)特定于我的系统,它有8个内核。如果核心数较少,则需要将其降低到6或4或2或1(即删除选项),等等,如果核心数较多,则需要增加。对于一个小的扩展,两种方式都不会有太大的区别

    ii)递归到文件夹的选项可能是默认选项,也可能不是默认选项,因此指定此选项应确保正确的递归

    iii)
    保留windows时间戳(创建、访问、修改)的选项应默认为
    上的
    ,因此可能不需要

    iv)
    忽略列表中的文件
    选项是包含要排除的文件列表和通配符的任何文件

    2.d)高级主题#1:忽略文件列表(示例)

    “C:\Program Files\7-Zip\7z.exe”a-tzip-mx9-mm=Deflate-mfb=258-mmt=8-mpass=15-mtc=on“addon-1.2.3-fx.xpi”*-x@ignore.txt

    2.e)高级主题#2:批处理文件(Windows CMD.EXE),假设为f
    @ECHO OFF
    REM - xpi.bat - batch file to create Mozilla add-on xpi using 7-Zip
    
    REM - This finds the folder name, and discards the rest of the full path, saves in an environment variable.
    FOR %%* IN (.) DO SET XPI=%%~nx*
    
    REM - Uncomment the DEL line, or delete .xpi file manually, if it gets corrupted or includes some other junk by accident.
    REM DEL "%XPI%.xpi"
    
    REM - Command line which does everything the GUI does, but also lets you run several passes for the smallest .xpi possible.
    "C:\Program Files\7-Zip\7z.exe" a -tzip -r -mx=9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "%XPI%.xpi" * -x@ignore.txt
    REM - Cleanup the environment variable.
    SET XPI=
    
    "applications": {
        "gecko": {
          "strict_min_version": "54.0a1",
          "id": "86257e65ca311ee368ffcee50598ce25733a049b@temporary-addon"
        }
      },