web-dev-qa-db-ja.com

7Zipでxpiファイルを作成する方法

私のFirefoxの拡張機能をxpiファイルとしてパックしたいと思います。アーカイブに追加して、filename.xpiという名前を付けてみました

しかし、Firefoxにインストールしようとすると、「パッケージが壊れています」というメッセージが表示されます。有効なxpiファイルを作成する方法はありますか?

Cygwinをインストールし、Zipコマンドを実行してxpiファイルを作成しようとしました。しかし、取得したZipはコマンドエラーではありません。

誰かが私にそれを成し遂げるように案内できますか?

24
user2301765

Windowsを使用している場合は(cygwinをインストールする場合と同じように表示されます)、組み込みのツールを使用できます。

  1. 拡張機能のコンテンツを選択します(外部フォルダーは選択しないでください)。
  2. 右クリック
  3. に送る
  4. 圧縮(zip形式)フォルダー

次に、ファイル名の.xpiの.Zipを置き換えます

問題はポイント1を正しく完了することにあるようです。拡張機能のコンテンツのみを選択します。それを含むフォルダではありません。

したがって、基本的にZipファイルは次のような構造になります。

my_extension.Zip
  |- install.rdf
  |- chrome.manifest
  |- <chrome>

この構造ではありません:

my_extension.Zip
  |- <my_extension>
       |- install.rdf
       |- chrome.manifest
       |- <chrome>
26
Filipe Silva

今日同じ問題が発生し、アドオンが明らかにMozillaによって署名されていないため、Firefoxがインストールを拒否したことがエラーであることがわかりました。最近まで、xpinstall.signatures.requiredabout:configをfalseに設定することにより、このセキュリティチェックを回避することが可能でした。ただし、Firefox 46以降では、署名は必須であり、バイパスは提供されなくなりました。 https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update)を参照してください/ これは、以前のバージョンにダウングレードするか、非リリースチャネルバージョンを使用してアドオンをテストする必要があることを意味します:(

4
Christallkeks

また、Firefoxの拡張機能をコマンドライン7zでパックする方法は次のとおりです。

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

(「a」は「追加/作成」を表し、「-r」は再帰を表します)

または、編集したファイルで拡張子を更新するには:

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

(アーカイブのコンテンツを更新するための "u")

2
tuk0z

7zを使用して拡張機能をパックする場合、.Zipに圧縮してから.xpiに名前を変更し、iは圧縮しない

2
Đăng Hải

GUI 7zFM.exe、またはコマンドラインまたはバッチファイルを使用する2つの方法。

1.0)GUIメソッド。 7-Zipがシェル統合と一緒にインストールされていると仮定すると、Windowsエクスプローラーのコンテキストメニュー(選択したファイルを右クリック)に7-Zipが表示されます。

1.a)アドオンのフォルダーに移動します。

1.b).xpiに含めるすべてのファイルとフォルダーを選択します。サブフォルダに無視したいファイルがないと仮定します。その場合は、コマンドラインオプションを使用することをお勧めします。

1.c)選択したファイルのリストを右クリックし、7zアイコンを見つけて、Add to archive...オプションを選択します。

1.d)ダイアログがポップアップします。 Zipファイルの場所と名前を編集し、.Zipから.xpiに変更します。

1.e)同じフォルダに.xpiを作成した場合、アドオンがひどく失敗するため、将来再アーカイブしないでください。偶然に.xpi内に.xpiが残ることは決してありません。通常は、ファイル名の先頭に..\を追加して、親フォルダーに作成します。 ..\addon-1.2.3-fx.xpi

1.f)7-Zipには強力な圧縮オプションがたくさんありますが、Firefoxがすべてを処理できるわけではありません。 Firefoxが処理できる設定を選択します。画像を参照してください。

7-Zip Settings for XPI Creation

2.0)コマンドラインメソッド。あなたがWindowsにいて、コマンドプロンプトを開く方法を知っていると仮定して、ドライブとディレクトリ(別名フォルダ)を変更します。

2.a)CDをアドオンディレクトリに追加します。

2.b)最も基本的な7-Zipコマンドラインを使用します。

"C:\Program Files\7-Zip\7z.exe" a -tzip addon-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 Compressionメソッドを使用する場合、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)preserve windows timestamps(作成、アクセス、変更)のオプションは、とにかくデフォルトでonにする必要があるため、必要ない場合があります。

iv)ignore files in listオプションは、除外するファイルのリストとファイルのワイルドカードを含む任意のファイルです。

2.d)高度なトピック#1:ファイルリストを無視(例)

|----------------|------------------------------------|
| What to Ignore | Why to Ignore                      |
|----------------|------------------------------------|
| TODO.txt       | Informal reminders of code to fix. |
| *.xpi          | In case you forget warning above!  |
| .ignore        | Ignore the ignore file list.       |
| ignore.txt     | Same thing, if you used this name. |
|----------------|------------------------------------|

"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" * [email protected]

2.e)高度なトピック#2:バッチファイル(Windows CMD.EXE)、21世紀以降のかなり最近のウィンドウを想定。これは、あなたがそれを作りたいと思うのと同じくらい単純で堅い、または複雑で柔軟にすることができます。一般的なバランスは、作業中のアドオンの最上位ディレクトリのCommand Promptにいることと、そのディレクトリに.xpiファイルと同じベース名を付けるようにインテリジェントに名前を付けていることを前提としています。例えばD:\dev\addon-1.2.3-fxアドオンxpiのaddon-1.2.3-fx.xpiディレクトリ。このバッチファイルはこの仮定を行い、.xpiに使用する正しいベース名を動的に計算します。

@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" * [email protected]
REM - Cleanup the environment variable.
SET XPI=
2
user2895783

7zを使用している場合は、次のように実行します。内部フォルダーのみを選択し、外部フォルダーは選択しません。ファイル名をfilename.xpiとして入力し、圧縮中に表示されるプロンプトでアーカイブ形式をZipとして選択します。作成された有効なxpiファイルが見つかります。作成したxpiを使用して、Firefoxに拡張機能をインストールします。できます!

1
user4583898

My_extensionフォルダー内のすべてのファイルとフォルダーを圧縮し、結果の圧縮ファイルの拡張子をmy_extension.xpiに変更するだけです。

/my_extension
  |- defaults/
  |- locale/
  |- resources/
  |- install.rdf
  |- ... (other files and folders)

My_extensionフォルダーの圧縮ファイルから作成されたxpiファイルをインストールすると、次のようなエラーが発生します。
「このアドオンは破損している可能性があるため、インストールできませんでした。」エラー

0
beebek

私はいくつかの方法でZipをビルドしようとしました。なぜなら、私が得たのは「パッケージが破損している」ものだけだからです。よく..もうありませんそして私は一時的なアドオンをロードすることからそれをロードする必要すらありません正当なxpiファイルとして!どのようにすればよいですか? '一時アドオンのロード(url:about:debugging#addons)で最初にロードしたgithubのものを自分で試すので、.batでuser314159によって使用されるメソッドを使用してxpiファイル7Zipを使用するファイルメソッド。

ロードした後、次のようなものを読む必要があります。

拡張ID 86257e65ca311ee368ffcee50598ce25733a049b @ temporary-addon

次に、「applications」を変更してmanifest.json内に追加するだけです。

"applications": {
    "gecko": {
      "strict_min_version": "54.0a1",
      "id": "86257e65ca311ee368ffcee50598ce25733a049b@temporary-addon"
    }
  },

この後、PushRemoveを実行して一時的なアドオンをアンインストールし、以前と同じようにxpiを再度ビルドする必要があります。 (ここでは何も変更せずに動作します)

Waterfox x64を使用していますが、Firefoxに問題があるようです

答えは、拡張機能をハブにアップロードしてから、Mozilla署名APIを使用することです https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Distribution

0
Constantin
  1. ファイルを作成config.js
  2. config.jsにコードを挿入
//
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
}
catch(ex) {}
  1. config.jsをアプリケーションの作業フォルダーに移動します。例:C:\Program Files\Mozilla Firefox\

  2. config-prefs.jsを作成し、コードを次の場所に書き込みます。

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");
  1. config-pres.jsC:\Program Files\Mozilla Firefox\defaults\pref\に配置

  2. Firefoxを再起動します

  3. 結果を見る

enter image description here

0
user251433