この翻訳は不完全です。英語から この記事を翻訳 してください。

ネイティブマニフェストは特別な形式の JSON ファイルで、拡張機能のインストールプロセスの範囲外の方法でユーザーのコンピューターに配布されます。例えば、ネイティブマニフェストは端末の管理者やネイティブアプリケーションのインストーラーによって配布されます。

3つの異なる種類のネイティブマニフェストがあります:

Native messaging マニフェスト native messagingと呼ぶ機能を可能にします、ここでは拡張機能は端末にインストールされたネイティブアプリとやりとりできます。
Managed storage マニフェスト

storage.managed API  使って拡張機能がアクセスする読み込み専用データを定義します。

PKCS #11 マニフェスト

拡張機能が pkcs11 API を使って PKCS #11 セキュリティモジュールを列挙して、Firefox にインストールできるようにします。

すべてのネイティブマニフェスト用に、ブラウザーがマニフェストを見つけられるように調整する必要があります。 マニフェストの場所にてこのルールを述べています。

Native messaging マニフェスト

native messaging マニフェスト 以下のプロパティを含む単一の JSON オブジェクトです:

名前 種類 説明
name String

ネイティブアプリケーションの名前です。

この名前は拡張機能の runtime.connectNative()runtime.sendNativeMessage() に渡される名前と一致している必要があります。

OS XとLinuxでは、native messaging マニフェストの(.json拡張子を除いた)ファイル名とも一致していなければなりません。

Windowsでは、native messaging マニフェストの場所を記した作成済みレジストリキーの名前と一致している必要があります。

名前には(大文字か小文字の)英数字とアンダースコア、ドットのみ含めることができます。最初または最後の文字にドットを使用することはできず、ドットを2つ以上連続させることもできません。

description String

ネイティブアプリケーションの説明です。

path String

ネイティブアプリケーションのパスです。

Windowsでは、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。

type String

拡張機能がアプリケーションに接続するために使用する方法を記述します。

現在のところ "stdio" のみが指定可能です。これはアプリケーションが標準入力 (stdin) を介してメッセージを受信し、標準出力 (stdout) を使用してメッセージを送信することを示します。

allowed_extensions Array of String

Add-on ID の配列です。配列中のそれぞれの値はこのネイティブアプリケーションとの通信が許可されている拡張機能を表します。

つまり、作成する拡張機能の manifest.json ファイルに applications キーを含めたくなるものと思われるため、開発中に明示的なIDを設定しておくと良いでしょう。

例として、"ping_pong"ネイティブアプリケーションのマニフェストを以下に示します:

{
  "name": "ping_pong",
  "description": "Example host for native messaging",
  "path": "/path/to/native-messaging/app/ping_pong.py",
  "type": "stdio",
  "allowed_extensions": [ "ping_pong@example.org" ]
}

この設定では、"ping_pong@example.org" というIDの拡張機能において "ping_pong" という名前を関連する runtime API 関数に渡すことによる接続が許可されます。 アプリケーション自体は "/path/to/native-messaging/app/ping_pong.py" です。

Managed storage manifests

"managed storage manifest"には次のプロパティを持った JSON オブジェクトがあります:

名前 種類 説明
name String

ストレージにアクセスできる拡張機能の ID で、この ID でもって拡張機能の applications キーを指定しておく。

description String 人間が読める説明で、Firefox には無視される。
type String

"storage" でないといけない。

data Object

JSON オブジェクトで、その中にあらゆる有効な JSON 値(文字列、数値、真偽値、オブジェクトを含む)が入る。これは browser.storage.managed ストレージ領域内のデータになる。

例えば:

{
  "name": "favourite-colour-examples@mozilla.org",
  "description": "ignored",
  "type": "storage",
  "data":
  {
    "colour": "management thinks it should be blue!"
  }
}

JSON マニフェストを受けて、"favourite-colour-examples@mozilla.org" 拡張機能は次のようなコードを使ってデータにアクセスできます:

var storageItem = browser.storage.managed.get('colour');
storageItem.then((res) => {
  console.log(`Managed colour is: ${res.colour}`);
});

PKCS #11 manifests

The PKCS #11 manifest is a file containing a JSON object with the following properties:

名前 種類 説明
name String

Name of the PKCS #11 module.

This must match the name used in the pkcs11 API.

On OS X and Linux, it must also match the manifest's filename (excluding the extension).

On Windows, it must match the name of the registry key you create, that contains the location of the manifest.

The name must match the following regular expression: "^\w+(\.\w+)*$". This means that it may only contain lowercase alphanumeric characters, underscores and dots. It may not start or end with a dot, and a dot cannot be followed by another dot.

description String

Description of the module.

This is used to set the friendly name for the module in the browser's UI (for example, the "Security Devices" dialog in Firefox).

path String

Path to the module.

On Windows, this may be relative to the manifest itself. On OS X and Linux it must be absolute.

type String This must be "pkcs11".
allowed_extensions Array of String

An array of Add-on ID values. Each value represents an extension which is allowed to interact with the module.

Note that this means you will probably want to include the applications key in your extension's manifest.json file, so you can set an explicit ID during development.

For example:

{
  "name": "my_module",
  "description": "My test module",
  "type": "pkcs11",
  "path": "/path/to/libpkcs11testmodule.dylib",
  "allowed_extensions": ["my-extension@mozilla.org"]
}

Given this JSON manifest, saved as ""my_module.json", the "my-extension@mozilla.org" extension could install the security module at "/path/to/libpkcs11testmodule.dylib" using code like this:

browser.pkcs11.installModule("my_module");

マニフェストの場所

Linux と Mac OS X では、マニフェストを特定の場所に保管する必要があります。Windows では、マニフェストの場所を指定するレジストリキーを作成する必要があります。

 

ブラウザが app manifest を見つけるために、app manifest はユーザのコンピュータの所定の場所に格納する必要があります。この場所はOSによっても異なりますし、アプリケーションをグローバルに使用可能にすべきか単一のユーザのみに使用可能にすべきかによっても異なります。

以下に示すオプション中の "<nane>" はすべて manifest 中の "name" の値です。先程の例に当てはめると "ping_pong" に相当します。

詳しいルールはどのマニフェストの種類でも同じですが、例外として最後から2番目のパスのコンポーネントはマニフェストの種類を特定します。下記の例では、3種類のそれぞれの形を示しています。すべての例において、<name> はマニフェスト内の name プロパティの値です。

Windows

グローバルな設定としては、以下の名前のレジストリキーを作成します:

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\<name>

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\<name>

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\<name>

このキーにマニフェストへのパスを示す単一のデフォルト値を設定します。

もし32ビットのアプリケーションであっても、このキーは Wow6432Node 下に作成しないように注意して下さい。ブラウザは常に32-bit エミュレーションではなくレジストリの "native" view 下のキーを探します。確実に"native" view にキーを作成するために、KEY_WOW64_64KEY または KEY_WOW64_32KEY フラグを RegCreateKeyEx に渡すことができます。Accessing an Alternate Registry View を参照して下さい。

ユーザごとの設定としては、以下の名前のレジストリキーを作成します:

HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\<name>

HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\<name>

HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\<name>

このキーにマニフェストへのパスを示す単一のデフォルト値を設定します。

Mac OS X

グローバルな設定としては、マニフェストを以下に配置します:

/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json

/Library/Application Support/Mozilla/ManagedStorage/<name>.json

/Library/Application Support/Mozilla/PKCS11Modules/<name>.json

個人ごとの設定としては、マニフェストを以下に配置します:

~/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json

~/Library/Application Support/Mozilla/ManagedStorage/<name>.json

~/Library/Application Support/Mozilla/PKCS11Modules/<name>.json

Linux

グローバルな設定としては、マニフェストを以下のいずれかに配置します:

/usr/lib/mozilla/native-messaging-hosts/<name>.json

/usr/lib/mozilla/managed-storage/<name>.json

/usr/lib/mozilla/pkcs11-modules/<name>.json

あるいは:

/usr/lib64/mozilla/native-messaging-hosts/<name>.json

/usr/lib64/mozilla/managed-storage/<name>.json

/usr/lib64/mozilla/pkcs11-modules/<name>.json

個人ごとの設定としては、マニフェストを以下に配置します:

~/.mozilla/native-messaging-hosts/<name>.json

~/.mozilla/managed-storage/<name>.json

~/.mozilla/pkcs11-modules/<name>.json

 

 

ドキュメントのタグと貢献者

 このページの貢献者: Uemmra3
 最終更新者: Uemmra3,