2013-10-08 15 views
14

firefox拡張機能をxpiファイルとしてパックしたいと思います。アーカイブに追加してfilename.xpiという名前を付けてみました。7Zipでxpiファイルを作成するには?

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

私はcygwinをインストールし、xipファイルを作成するためにzipコマンドを実行しようとしました。しかし、ジップはコマンドエラーではありません。

誰かが私にそれを手伝うことができますか?その後、

+0

あなたはそれを機能させることができましたか? –

+0

また、Addon-SDKを使用している場合は、他のビルドプロセスと同様に、cfxツールを使用してxpiを作成する必要があります。 – jsantell

+0

署名されたXPIには、最初のエントリとしてMETA-INF/zigbert.rsaが必要であるため、https://developer.mozilla.org/en-US/docs/Signing_a_XPIではXPIに署名するときに7-zipを推奨します。アルファベット順にソートされます。 – Brian

答えて

22

を圧縮いけない、あなたは構築されたウィンドウを使用することができますツール内:

  1. エクステンションの内容を選択します(覚えておいて、外側のフォルダを選択しないでください)。
  2. 圧縮(zip形式)フォルダ

に送信をクリックしてそれからちょうどあなたの問題はポイント1を完了する上でのように見える

ファイル名で.xpiの.zipを置き換えます正しく。拡張機能の内容のみを選択します。それを含むフォルダではありません。

だから基本的にはあなたのzipファイルには構造次しておく必要があります

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

およびNOTこの構造:

my_extension.zip 
    |- <my_extension> 
     |- install.rdf 
     |- chrome.manifest 
     |- <chrome> 
+0

返信ありがとうございました...私は同じ方法を試みましたが、firefoxにインストールする際に "パッケージが無効です"というエラーが表示されました。私は自分のホストでシェルにアクセスし、Linuxサーバでzipコマンドで試してみました。 xpiはFirefoxで正常に動作します... – user2301765

+0

私は過去に "壊れた"メッセージを受け取りましたが、それは私がzipファイルの中に直接内容を持っていなかったためです。そうでなければ何が間違っているのか分かりません。 –

+0

@ user2301765 addon-sdkを使用している可能性はありますか? –

1

7Zを使用してパックの拡張子は、.zipファイルに圧縮し.xpiする名前を変更するには、(あなたが同じように見えるCygwinをインストールする)は、Windows上にある場合、私に

2

をまた、ここで私はコマンドラインの7zでFirefox用の拡張パック方法です

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

(「」「-r」再帰について「を追加/作成する」との略である)

それとも私達はちょうど編集したファイル(複数可)との延長を更新するには:「(

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

u "を選択してください)

+0

素敵なトリック。 C:\ Windows \ System32 \ cmd.exe/k cd "C:\ Users \ \ Documents \ Extensions \ \"& "圧縮プロセスを自動化するショートカットを作成することができます。 %ProgramFiles%\ 7-Zip \ 7z.exe "a"。\ .xpi "-r chromeのデフォルトはchrome.manifest install.rdf'です。あまりにも悪い7-Zipバグ496(https://sourceforge.net/p/sevenzip/bugs/496/)は、これを任意の値にするために修正する必要があります。 –

+0

実際には、「%SystemRoot%\ System32 \ cmd.exe/c cd」%USERPROFILE%\ Documents \ Extensions \ \ "&"%ProgramFiles%\ 7-Zip \ 7z.exeの方がよいでしょう。 "a"。\ .xpi "-r chromeのデフォルト値はchrome.manifest install.rdf'です。これは、さらに2つの環境変数を使用し、cmd.exeウィンドウを開いたままにしないフラグを使用します。 –

+0

実際、7-ZipバグはMozilla Thunderbird 38.5.1には当てはまりません。つまり、このショートカットを使用して、Thunderbirdの現在のバージョンのThunderbird拡張機能をパックすることができます。 –

1

7zを使用中に次のようにしてください。 内側のコンテンツのみを選択し、外側のフォルダは選択しないでください。 ファイル名をfilename.xpiと入力し、アーカイブフォーマットをzipとし、圧縮している間に表示されるプロンプトで選択します。 有効なxpiファイルが作成されています。 作成したxpiを使用してFirefoxに拡張機能をインストールします。 それは動作します!

0

my_extensionフォルダ内のすべてのファイルとフォルダを圧縮し、結果のzipファイルの拡張子をmy_extensionに変更します。
「壊れているように見えるので、これはアドオンがインストールできませんでした。」とmy_extensionフォルダのzip形式のファイルから作成されたXPIファイルのXPI

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

インストールがエラーになりますエラー

4

私は今日同じ問題を経験しましたが、アドオンが明らかにMozillaによって署名されていないことが原因で、Firefoxがインストールを拒否しているというエラーが見つかりました。最近まで、に​​をfalseに設定してこのセキュリティチェックをバイパスすることができました。しかし、Firefox 46以降、署名は必須であり、バイパスはもはや提供されません。https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update/を参照してください。これは、アドオンをテストするために以前のバージョンにダウングレードするか、またはリリースではないバージョンを使用する必要があることを意味します。(

2

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

1.0)GUI方法。 7-Zipがシェル統合と一緒にインストールされていると仮定すると、エクスプローラのコンテキストメニュー(選択したファイルの右クリック)に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にいると仮定し、コマンドプロンプトを開く方法を知っているなら、ドライブとディレクトリ(a.k.a.フォルダ)を変更してください。

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" *

注意がないことを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 |   | [email protected]{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ファイルの同じベース名を持つようにインテリジェントに命名したことです。 addon-1.2.3-fx.xpiアドオンxpiのD:\dev\addon-1.2.3-fxディレクトリ。このバッチファイルはこの仮定を行い、.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= 
+0

素晴らしい詳細、ありがとう、 –

+0

ありがとう。 '-mx9'を修正するためにタイプミスで更新されました。これは' -mx = 9'のように '='を持つはずです。マルチスレッド '-mmt = 8'オプションと再帰' -r'オプションに関する注意を追加しました。これは、XUL、Bootstrap/Restartless/cfm、SDK/jpm、さらにはWebExtensions/web-extを使って、テスト、開発、パブリッシング用のアドオンをうまくパッケージ化した方法です。これらのツールは、メタファイルにとって奇妙なことを行う場合があり、手動で修正して再パッケージする必要があります。 – user314159

関連する問題