私のFirefoxの拡張機能をxpiファイルとしてパックしたいと思います。アーカイブに追加して、filename.xpiという名前を付けてみました
しかし、Firefoxにインストールしようとすると、「パッケージが壊れています」というメッセージが表示されます。有効なxpiファイルを作成する方法はありますか?
Cygwinをインストールし、Zipコマンドを実行してxpiファイルを作成しようとしました。しかし、取得したZipはコマンドエラーではありません。
誰かが私にそれを成し遂げるように案内できますか?
Windowsを使用している場合は(cygwinをインストールする場合と同じように表示されます)、組み込みのツールを使用できます。
次に、ファイル名の.xpiの.Zipを置き換えます
問題はポイント1を正しく完了することにあるようです。拡張機能のコンテンツのみを選択します。それを含むフォルダではありません。
したがって、基本的にZipファイルは次のような構造になります。
my_extension.Zip
|- install.rdf
|- chrome.manifest
|- <chrome>
この構造ではありません:
my_extension.Zip
|- <my_extension>
|- install.rdf
|- chrome.manifest
|- <chrome>
今日同じ問題が発生し、アドオンが明らかにMozillaによって署名されていないため、Firefoxがインストールを拒否したことがエラーであることがわかりました。最近まで、xpinstall.signatures.required
でabout:config
をfalseに設定することにより、このセキュリティチェックを回避することが可能でした。ただし、Firefox 46以降では、署名は必須であり、バイパスは提供されなくなりました。 https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update)を参照してください/ これは、以前のバージョンにダウングレードするか、非リリースチャネルバージョンを使用してアドオンをテストする必要があることを意味します:(
また、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")
7zを使用して拡張機能をパックする場合、.Zipに圧縮してから.xpiに名前を変更し、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が処理できる設定を選択します。画像を参照してください。
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=
7zを使用している場合は、次のように実行します。内部フォルダーのみを選択し、外部フォルダーは選択しません。ファイル名をfilename.xpiとして入力し、圧縮中に表示されるプロンプトでアーカイブ形式をZipとして選択します。作成された有効なxpiファイルが見つかります。作成したxpiを使用して、Firefoxに拡張機能をインストールします。できます!
My_extensionフォルダー内のすべてのファイルとフォルダーを圧縮し、結果の圧縮ファイルの拡張子をmy_extension.xpiに変更するだけです。
/my_extension
|- defaults/
|- locale/
|- resources/
|- install.rdf
|- ... (other files and folders)
My_extensionフォルダーの圧縮ファイルから作成されたxpiファイルをインストールすると、次のようなエラーが発生します。
「このアドオンは破損している可能性があるため、インストールできませんでした。」エラー
私はいくつかの方法で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
config.js
config.js
にコードを挿入//
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
}
catch(ex) {}
config.js
をアプリケーションの作業フォルダーに移動します。例:C:\Program Files\Mozilla Firefox\
config-prefs.js
を作成し、コードを次の場所に書き込みます。
pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");
config-pres.js
をC:\Program Files\Mozilla Firefox\defaults\pref\
に配置
Firefoxを再起動します
結果を見る