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 36804d16eb5207..4ffe4f4f4186fb 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 @@ -5,7 +5,7 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests {{AddonSidebar}} -原生应用清单是一个符合特定规则的 JSON 文件,它应该使用与 extension 不同的安装方式存放在用户的计算机上。举个例子,原生应用清单是由设备管理员或者通过原生应用安装器提供的。 +原生应用清单是一个符合特定规则的 JSON 文件,它应该使用与扩展不同的安装方式存放在用户的计算机上。举个例子,原生应用清单是由设备管理员或者通过原生应用安装器提供的。 有三种不同的原生应用清单: @@ -13,33 +13,32 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests - 原生应用通信清单 + 原生应用通信清单 - 开启一个叫原生通信的功能:使 - extension 可以与本机的原生应用交换信息。 + 启用原生通信特性:使扩展可以与本机的原生应用通信。 - 存储管理清单 + 存储管理清单 - 定义一些 extension 可以用 + 定义一些扩展可以用 {{WebExtAPIRef("storage.managed")}} API 读取的只读数据。 - PKCS #11 清单 + PKCS #11 清单 - 定义了 extension 使用 {{WebExtAPIRef("pkcs11")}} API 去枚举 - PKCS #11 安全模型 并在 Firefox 安装它们。 + 定义了扩展使用 {{WebExtAPIRef("pkcs11")}} API 去枚举 + PKCS #11 安全模型,并在 Firefox 安装它们。 -对于所有的原生应用清单,你需要做一些工作以便于浏览器可以找到它们。这些规则在 [清单路径](#清单路径) 章节。 +对于所有的原生应用清单,你需要做一些工作以便于浏览器可以找到它们。这些规则在[清单路径](#清单路径)章节。 ## 原生应用通信清单 @@ -48,19 +47,19 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests - - - + + + - + - + - + - + - +
NameTypeDescription名称类型描述
nameString字符串 -

原生应用的名字

+

原生应用的名字。

- 它必须与 extension 调用 + 它必须与扩展调用 {{WebExtAPIRef("runtime.connectNative()")}} 和 {{WebExtAPIRef("runtime.sendNativeMessage()")}} 时传入的名称保持一致。 @@ -72,32 +71,31 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests

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

descriptionString字符串 关于这个原生应用的描述。
pathString字符串

原生应用的路径。

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

typeString字符串 -

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

+

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

目前只支持一种值,那就是 "stdio"。该值表示应用使用标准输入(stdin)来接受消息,用标准输出(stdout)来发送消息。 @@ -106,18 +104,17 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests

allowed_extensionsArray of String字符串数组

- 由 - Add-on ID附加组件 ID - 组成的数组。每个值代表允许 ID 为该值的 extension 与这个原生应用通信。 + 组成的数组。每个值代表允许 ID 为该值的扩展与这个原生应用通信。

- 请注意这意味着你可能需要在你 extension 的 manifest.json 文件中包含 + 请注意这意味着你可能需要在你扩展的 manifest.json 文件中包含

-举个例子,这是 ping_pong 原生应用的原生应用通信清单: +举个例子,这是 `ping_pong` 原生应用的清单: ```json { @@ -143,7 +140,7 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests } ``` -这允许 ID 为 `ping_pong@example.org` 的 extension 通过 `ping_pong` 的名字传入给相关 {{WebExtAPIRef("runtime")}} API 函数进行连接。原生应用自身在 `/path/to/native-messaging/app/ping_pong.py` 中。 +这允许 ID 为 `ping_pong@example.org` 的扩展通过 `ping_pong` 的名字传入给相关 {{WebExtAPIRef("runtime")}} API 函数进行连接。原生应用自身在 `/path/to/native-messaging/app/ping_pong.py` 中。 ## 存储管理清单 @@ -152,18 +149,18 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests - - - + + + - + - + - + - + @@ -213,7 +209,7 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests } ``` -在给出的清单文件中,ID 为 `favourite-color-examples@mozilla.org` 的 extension 有权限使用清单中的 data 字段中的数据,代码如下: +根据给出的 JSON 清单,`favourite-color-examples@mozilla.org` 扩展可以像这样访问数据: ```js let storageItem = browser.storage.managed.get('color'); @@ -229,33 +225,32 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性:
NameTypeDescription名称类型描述
nameString字符串

- 可以访问此存储的扩展的 ID,与你在 extension 中 + 可以访问此存储的扩展的 ID,与你在扩展中

descriptionString字符串 人类可读的描述,Firefox 会忽略它
typeString字符串 -

该值只能是 "storage".

+

该值只能是 "storage"

dataObject对象

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

- - - + + + - + - + - - + + - +
NameTypeDescription名称类别描述
nameString字符串

PKCS #11 模块的名字。

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

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

-

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

在 Windows 中,它必须与你创建的注册表键的名称相匹配,该注册表键包含了清单的文件位置。

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

descriptionString字符串

模块的描述。

@@ -270,19 +265,19 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性:

模块的路径。

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

typeString该值只能是 pkcs11字符串该值只能是 "pkcs11"
allowed_extensionsArray of String字符串数组

由 @@ -290,11 +285,11 @@ PKCS #11 清单中包含单个 JSON 对象,对象具有如下属性: href="https://extensionworkshop.com/documentation/develop/extensions-and-the-add-on-id/" >Add-on ID - 组成的数组。每个值代表允许 ID 为该值的 extension 与这个模块通信。 + 组成的数组。每个值代表允许 ID 为该值的扩展与这个模块通信。

- 请注意这意味着你可能需要在你 extension 的 manifest.json 文件中包含 + 备注:这意味着你可能需要在你扩展的 manifest.json 文件中包含 ` 代表清单中的 `name` 字段值。 +所有类型的清单的详细规则都是相同的,除了倒数第二个的 type 字段表示了清单的类型。下面的例子展示了三种不同类型的清单。在例子中,`` 代表清单中的 `name` 字段值。 ### Windows @@ -349,15 +344,13 @@ HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\ HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\ ``` -注册表应该有单个默认值,值里存放“到清单文件的路径”。比如为原生应用通信清单建立的注册表差不多是这样: - -![为原生应用通信清单建立的注册表](native-message-regkey-exaple.png) +注册表应该有单个默认值,值里存放到清单文件的路径。 -> **警告:** 从 Firefox 64 开始,将首先检查 32 位注册表视图 [Wow6432Node](https://zh.wikipedia.org/wiki/WoW64#Registry_and_file_system) 的键,然后是 "native" 注册表视图。请使用适合你的应用程序的那一个。 +> **警告:** 从 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)。 +> **对于 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)。 -如果想要用户级别的可见,使用下面的路径创建注册表: +如果想要用户级别可见,使用下面的路径创建注册表: ``` HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\ @@ -371,7 +364,7 @@ HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\ HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\ ``` -注册表应该有单个默认值,值里存放“到清单文件的路径”。 +注册表应该有单个默认值,为到清单文件的路径。 ### macOS @@ -389,7 +382,7 @@ HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\ /Library/Application Support/Mozilla/PKCS11Modules/.json ``` -如果想要用户级别的可见,将清单文件存放在: +如果想要用户级别可见,将清单文件存放在: ``` ~/Library/Application Support/Mozilla/NativeMessagingHosts/.json @@ -422,18 +415,18 @@ HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\ 或者: ``` - /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 ``` -如果想要用户级别的可见,将清单文件存放在: +如果想要用户级别可见,将清单文件存放在: ``` ~/.mozilla/native-messaging-hosts/.json diff --git a/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/native-message-regkey-exaple.png b/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/native-message-regkey-exaple.png deleted file mode 100644 index 44858b05a77693..00000000000000 Binary files a/files/zh-cn/mozilla/add-ons/webextensions/native_manifests/native-message-regkey-exaple.png and /dev/null differ