diff --git a/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/index.md b/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/index.md index 788ce1fe848b4c..e1b3b36c86d8d3 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/index.md +++ b/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/index.md @@ -12,32 +12,30 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests - + - + - + @@ -70,31 +68,30 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests 时传入的名称保持一致。

- 在 OS X 和 Linux 中,它必须和清单文件的文件名保持一致(除.json - 文件扩展名外)。 + 在 MacOS 和 Linux 中,它还必须和清单文件的文件名保持一致(除 .json 文件扩展名外)。 +

+

在Windows上,它必须与你创建的注册表键的名称相匹配,该注册表键包含本地信息传递清单的位置。

-

在 Windows 中,它必须和你创建的包含原生应用清单路径的注册表一致。

- 它必须符合正则表达式 - "^\w+(\.\w+)*$"。这意味着它只能包含小写字母、数字、下划线和 - . ,并且不允许开头或结束是 . ,并且 - . 后面不能是 . 。 + 它必须符合正则表达式 "^\w+(\.\w+)*$"。 + 这意味着它只能包含大小写字母、数字、下划线和 . 。 + 开头或结束不能是是 . ,并且 . 后面不能是 .

- + @@ -102,10 +99,10 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests @@ -116,21 +113,21 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests

Add-on ID 组成的数组。每个值代表允许 ID 为该值的 extension 与这个原生应用通信。

-
-

- 这意味着你可能需要在你 extension 的 manifest.json 中包含 - applications - 字段,并为 extension 设置一个显示的 ID,哪怕是在开发时 -

-
+

+ 请注意这意味着你可能需要在你 extension 的 manifest.json 文件中包含 + browser_specific_settings + 字段,并在开发过程中设置一个明确的 ID。 +

@@ -148,7 +145,7 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests } ``` -清单表示:它允许 ID 为 ping_pong\@example.org 的 extension 通过传入 ping_pong 给 {{WebExtAPIRef("runtime")}} 与自己连接。原生应用自身在 /path/to/native-messaging/app/ping_pong.py 中。 +这允许 ID 为 `ping_pong@example.org` 的 extension 通过 `ping_pong` 的名字传入给相关 {{WebExtAPIRef("runtime")}} API 函数进行连接。原生应用自身在 `/path/to/native-messaging/app/ping_pong.py` 中。 ## 存储管理清单 @@ -168,36 +165,36 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests - + - + @@ -208,22 +205,22 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests ```json { - "name": "favourite-colour-examples@mozilla.org", + "name": "favourite-color-examples@mozilla.org", "description": "ignored", "type": "storage", "data": { - "colour": "management thinks it should be blue!" + "color": "management thinks it should be blue!" } } ``` -在给出的清单文件中,ID 为 favourite-colour-examples\@mozilla.org 的 extension 有权限使用清单中的 data 字段中的数据,代码如下: +在给出的清单文件中,ID 为 `favourite-color-examples@mozilla.org` 的 extension 有权限使用清单中的 data 字段中的数据,代码如下: ```js -var storageItem = browser.storage.managed.get('colour'); +let storageItem = browser.storage.managed.get('color'); storageItem.then((res) => { - console.log(`Managed colour is: ${res.colour}`); + console.log(`Managed color is: ${res.color}`); }); ``` @@ -247,15 +244,15 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性:

PKCS #11 模块的名字。

它必须和你使用 pkcs11 API 时的名字一致。

- 在 OS X 和 Linux - 中,它必须和清单文件的文件名保持一致(除文件扩展名外) + 在 MacOS 和 Linux 中,它必须和清单文件的文件名保持一致(除文件扩展名外) +

+

在 Windows 中,它必须与你创建的注册表键的名称相匹配,该注册表键包含本地 ·manifest· 的位置

-

在 Windows 中,它必须和你创建的包含原生应用清单路径的注册表一致。

它必须符合正则表达式 - "^\w+(\.\w+)*$"。这意味着它只能包含小写字母、数字、下划线和 - . ,并且不允许开头或结束是 . ,并且 - . 后面不能是 . 。 + "^\w+(\.\w+)*$"。 + 这意味着它只能包含小写字母、数字、下划线和 . 。 + 开头或结束不能是是 . ,并且 . 后面不能是 .

@@ -263,7 +260,7 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性: @@ -284,7 +281,7 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性: - + @@ -293,19 +290,21 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性:

Add-on ID 组成的数组。每个值代表允许 ID 为该值的 extension 与这个模块通信。

-
+

- 这意味着你可能需要在你 extension 的 manifest.json 中包含 - applicationsmanifest.json 文件中包含 + browser_specific_settings - 字段,并为 extension 设置一个显示的 ID,哪怕是在开发时 + 字段,并在开发过程中设置一个明确的 ID。

@@ -325,7 +324,7 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性: } ``` -给出的这个 JSON 清单,保存为 my_module.json,ID 为 my-extension\@mozilla.org 的 extension 就能够使用类似于如下代码安装 /path/to/libpkcs11testmodule.dylib 安全模块: +给出的这个 JSON 清单,保存为 my_module.json,ID 为 `my-extension@mozilla.org` 的 extension 就能够使用类似于如下代码安装 /path/to/libpkcs11testmodule.dylib 安全模块: ```js browser.pkcs11.installModule("my_module"); @@ -333,19 +332,23 @@ browser.pkcs11.installModule("my_module"); ## 清单路径 -在 Linux 和 Mac OS X 中,你需要将清单文件存在特定的位置。在 Windows 中,你需要创建一个注册表来指向清单文件。 +在 Linux 和 macOS 中,你需要将清单文件存在特定的位置。在 Windows 中,你需要创建一个注册表键来指向清单文件。 -所有类型的清单的详细规则都是相同的,除了倒数第二个的 type 字段表示了清单的类型。下面的例子展示了三种不同类型的清单。在例子中,\ 代表清单中的 name 字段值。 +所有类型的清单的详细规则都是相同的,除了倒数第二个的 type 字段表示了清单的类型。下面的例子展示了三种不同类型的清单。在例子中, `` 代表清单中的 `name` 字段值。 ### Windows 如果想要全局可见,使用下面的路径创建注册表: -```plain +``` HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\ +``` +``` HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\ +``` +``` HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\ ``` @@ -353,39 +356,53 @@ HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\ ![为原生应用通信清单建立的注册表](native-message-regkey-exaple.png) -> **备注:** 对于原生应用清单,即使原生应用是 32 位的,也不能在 [Wow6432Node](https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system) 下创建注册表。浏览器将总会在 native 视图下寻找注册表的,而不是 32 位放在环境。确保注册表的创建在原生视图中,你可以键入 KEY_WOW64_64KEY 或 KEY_WOW64_32KEY 到 RegCreateKeyEx。请参考:[Accessing an Alternate Registry View]() +> **警告:** 从 Firefox 64 开始,将首先检查 32 位注册表视图 [Wow6432Node](https://zh.wikipedia.org/wiki/WoW64#Registry_and_file_system) 的键,然后是 "native" 注册表视图。请使用适合你的应用程序的那一个。 +> +> **对 于Firefox 63 和更早的版本:** 这个键不应该在 [Wow6432Node](https://zh.wikipedia.org/wiki/WoW64#Registry_and_file_system) 下创建,即使应用程序是 32 位的。以前版本的浏览器总是在注册表的 "native" 视图下寻找该键,而不是在 32 位模拟视图下寻找。为了确保在 "native" 视图中创建键,你可以在 `RegCreateKeyEx` 中传递 `KEY_WOW64_64KEY` 或 `KEY_WOW64_32KEY` 标志。参见[访问备用注册表视图](https://docs.microsoft.com/windows/win32/winprog64/accessing-an-alternate-registry-view)。 如果想要用户级别的可见,使用下面的路径创建注册表: -```plain +``` HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\ +``` +``` HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\ +``` +``` HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\ ``` 注册表应该有单个默认值,值里存放“到清单文件的路径”。 -### Mac OS X +### macOS 如果想要全局可见,将清单文件存放在: -```plain +``` /Library/Application Support/Mozilla/NativeMessagingHosts/.json +``` +``` /Library/Application Support/Mozilla/ManagedStorage/.json +``` +``` /Library/Application Support/Mozilla/PKCS11Modules/.json ``` 如果想要用户级别的可见,将清单文件存放在: -```plain +``` ~/Library/Application Support/Mozilla/NativeMessagingHosts/.json +``` +``` ~/Library/Application Support/Mozilla/ManagedStorage/.json +``` +``` ~/Library/Application Support/Mozilla/PKCS11Modules/.json ``` @@ -393,30 +410,42 @@ HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\ 如果想要全局可见,将清单文件存放在: -```plain +``` /usr/lib/mozilla/native-messaging-hosts/.json +``` +``` /usr/lib/mozilla/managed-storage/.json +``` +``` /usr/lib/mozilla/pkcs11-modules/.json ``` 或者: -```plain -/usr/lib64/mozilla/native-messaging-hosts/.json +``` + /usr/lib64/mozilla/native-messaging-hosts/.json +``` -/usr/lib64/mozilla/managed-storage/.json +``` + /usr/lib64/mozilla/managed-storage/.json +``` -/usr/lib64/mozilla/pkcs11-modules/.json +``` + /usr/lib64/mozilla/pkcs11-modules/.json ``` 如果想要用户级别的可见,将清单文件存放在: -```plain +``` ~/.mozilla/native-messaging-hosts/.json +``` +``` ~/.mozilla/managed-storage/.json +``` +``` ~/.mozilla/pkcs11-modules/.json ```
原生应用通信清单 -

- 定义关于与本地应用通信的功能:哪一个 extension 可以与本机的原生应用交换信息。 -

+ 原生应用通信清单 +
+ 开启一个叫 + 原生通信 的功能:使 extension 可以与本机的原生应用交换信息。
存储管理清单 -

- 定义一些 extension 可以用 - {{WebExtAPIRef("storage.managed")}} 读取的只读数据。 -

+ 存储管理清单 +
+ 定义一些 extension 可以用 + {{WebExtAPIRef("storage.managed")}} API 读取的只读数据。
PKCS #11 清单PKCS #11 清单 -

- 定义了 extension 使用 {{WebExtAPIRef("pkcs11")}} API 去枚举 - PKCS #11 安全模型 并在 Firefox 安装它们。 -

+ 定义了 extension 使用 {{WebExtAPIRef("pkcs11")}} API 去枚举 + PKCS #11 安全模型 并在 Firefox 安装它们。
description String

关于这个原生应用的描述。

关于这个原生应用的描述。
path String -

到原生应用的路径。

+

原生应用的路径。

- 在 Windows 中,这可以是一个相对路径。在 OS X 和 Linux - 中,必须是绝对路径。 + 在 Windows 中,这可以是一个相对路径(相对于 manifest )。 + 在 MacOS 和 Linux中,必须是绝对路径。

type String -

定义 extension 和原生应用的连接方法。

+

描述 extension 和原生应用的连接方法。

- 目前只支持一种值,那就是 - stdio。该值表示应用使用标准输入(stdin)来接受消息,用标准输出(stdout)来发送消息。 + 目前只支持一种值,那就是 "stdio"。 + 该值表示应用使用标准输入(stdin)来接受消息,用标准输出(stdout)来发送消息。

String

- 一个 extension 的 ID,表示这个 extension - 可以读取这个仓库。 -

-

- 给出这个 ID 需要你的 extension 的 manifest.json 文件包含 - applicationsbrowser_specific_settings - 字段。 + 字段确定的 ID 一致。

description String

人类可读的描述,Firefox 会忽略它。

人类可读的描述,Firefox 会忽略它
type String

该值只能是storage

+

该值只能是 "storage".

+
data Object

- 一个 JSON 对象,其中可以包含任何合法的 JSON - 值(string、number、boolean、array、object),他们将成为browser.storage.managed可访问的数据。 + 一个 JSON 对象,其中可以包含任何合法的 JSON 值,包括 + string、number、boolean、array、object),他们将成为 browser.storage.managed 存储区域中的数据。

description String -

关于该模块的描述。

+

模块的描述。

它将被用在浏览器界面中为模块设置一个友好的名字(比如,在 Firefox 的“安全设备”对话框中) @@ -274,9 +271,9 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性:

path String -

到模块的路径。

+

模块的路径。

- 在 Windows 中,这可以是一个相对路径。在 OS X 和 Linux + 在 Windows 中,这可以是一个相对于 manifest 的路径。在 MacOS 和 Linux 中,必须是绝对路径。

type String该值只能是pkcs11。This must be "pkcs11".该值只能是 pkcs11
allowed_extensions