Alternative extension distribution options(替代扩展分发选项)

警告 此页面直接从 MV2 文档集迁移而来。它尚未经过验证是否符合 Manifest V3。

所有 Chrome 扩展程序都必须直接从 Chrome 网上应用店或使用下述机制分发。不遵守这些分发方法之一即构成违反 Chrome 扩展程序政策,并可能导致扩展程序和/或分发它的软件被标记为不需要的软件unwanted software

通常,用户从 Chrome 网上应用店安装扩展程序,但有时您可能希望通过其他方式安装扩展程序。下面是两个典型案例:

  • 扩展程序与某些其他软件相关联,并且每当用户安装该其他软件时都应安装该扩展程序。
  • 网络管理员希望在整个组织中安装相同的扩展。

不是从 Chrome 网上应用店安装的扩展程序称为外部扩展程序。对于希望将扩展作为其他软件安装过程的一部分进行分发的开发人员,或者对于想要在整个组织中分发扩展程序的网络管理员,Google Chrome 支持以下扩展程序安装方法:

  • 使用首选项 JSON 文件(仅适用于 Mac OS X 和 Linux)
  • 使用 Windows 注册表(仅适用于 Windows)

这两种方式都支持安装在 update_URL 上托管的扩展。在 Windows 和 Mac 上,update_URL 必须指向必须托管扩展程序的 Chrome 网上应用店。

Linux 上的首选项文件可以指向您自己托管扩展的服务器。首选项 JSON 文件还支持从用户 Linux 计算机上的 .crx 扩展文件安装扩展。

# Before you begin

首先,在 Chrome Web Store 中发布publish扩展程序,或者打包一个 .crx 文件并确保它安装成功。

警告 Windows 和 Mac 安装必须来自 Chrome 网上应用店:从 Chrome 33 开始,不允许从 Windows 上本地 .crx 的路径进行外部安装(请参阅保护 Windows 用户免受恶意扩展程序的影响)。从 Chrome 44 开始,不允许从 Mac 上本地 .crx 的路径进行外部安装(请参阅继续保护 Chrome 用户免受恶意扩展程序的侵害)。

如果从更新 URL 安装,请确保正确托管扩展hosted

在编辑首选项文件或注册表之前,请注意以下事项:

  • 扩展的 .crx 文件的预期位置,或提供它的更新 URL
  • 扩展程序的版本(来自清单文件或 chrome://extensions 页面)
  • 扩展程序的 ID(来自 chrome://extensions 页面,当您加载打包的扩展程序时)

以下示例假设版本为 1.0,ID 为 aaaaaaaaaabbbbbbbbbbcccccccccc

# Using a preferences file(使用首选项文件)

仅限 Mac OS X 和 Linux:不要使用 Windows 的首选项文件。请改用 Windows 注册表

  1. 如果您在 Linux 上从文件安装,请使 .crx 扩展文件可用于要安装扩展的计算机。 (例如将其复制到本地目录或网络共享,\\server\share\extension.crx or /home/share/extension.crx.)

  2. 在下面列出的文件夹之一中创建一个具有以下名称的文件:aaaaaaaaaabbbbbbbbbbcccccccccc.json 其中文件名(不带扩展名)对应于您的扩展名的 ID。位置取决于操作系统。

    Mac OS X:

    对于特定用户:~USERNAME/Library/Application Support/Google/Chrome/External Extensions/ For all users: /Library/Application Support/Google/Chrome/External Extensions/

    仅当路径中的每个目录都归用户 root 所有、具有组 admin 或 wheel 并且不可全局写入时,所有用户的外部扩展文件才是只读的。路径也必须没有符号链接。这些限制可防止非特权用户导致为所有用户安装扩展。有关详细信息,请参阅故障排除

    注意:上述所有用户的路径是在 Chrome 16 中添加的。之前的版本使用了不同的路径:/Applications/Google Chrome.app/Contents/Extensions/此路径在版本 17 中已弃用。在版本 20 中删除了支持。请改用上述路径之一。

    Linux:

    /opt/google/chrome/extensions/
    /usr/share/google-chrome/extensions/

    注意:如有必要,请使用 chmod 以确保 aaaaaaaaaabbbbbbbbbbcccccccccc.json 文件是全球可读的。

  3. 仅限 Linux:如果您从文件安装,请在上面创建的文件中使用名为“external_crx”和“external_version”的字段指定扩展的位置和版本。

    • 例子:

    • {
         "external_crx": "/home/share/extension.crx",
         "external_version": "1.0"
       }
      • 注意:您需要对位置中的每个 \ 字符进行转义。例如,\\server\share\extension.crx 将是“\\\\server\\share\\extension.crx”。
  1. 如果您从更新 URL 安装,请使用字段名称“external_update_url”指定扩展的更新 URL。

  2. 从本地 .crx 文件安装的示例(仅限 Linux):

    1. {
        "external_update_url": "http://myhost.com/mytestextension/updates.xml"
      }
  1. 从 Chrome 网上商店(Mac 和 Linux)安装的示例:

    {
       "external_update_url": "https://clients2.google.com/service/update2/crx"
     }
    1. 如果您只想为某些浏览器语言环境安装扩展,您可以在字段名称“supported_locale”中列出支持的语言环境。语言环境可以指定父语言环境,如“en”,在这种情况下,将为所有英语语言环境安装扩展,如“en-US”、“en-GB”等。如果选择了扩展不支持的另一个浏览器区域设置,外部扩展将被卸载。如果缺少“supported_locales”列表,将为任何语言环境安装扩展。

    2. 例子:

    3.  {
         "external_update_url": "https://clients2.google.com/service/update2/crx",
         "supported_locales": [ "en", "fr", "de" ]
       }
  1. 保存 JSON 文件。

  2. 启动谷歌浏览器并转到 chrome://extensions;您应该会看到列出的扩展名。

注意:以前版本的 Google Chrome 使用 external_extensions.json 文件来指定要安装的扩展程序。此文件已被弃用,取而代之的是单个 .json 文件,每个扩展名一个。

# Troubleshooting Mac OS permissions problems(对 Mac OS 权限问题进行故障排除)

在 Mac OS 上,所有用户的外部扩展文件只有在文件系统权限阻止非特权用户更改它时才会被读取。如果您在 Chrome 启动时没有看到安装了外部扩展程序,则外部扩展程序首选项文件可能存在权限问题。要查看这是否是问题所在,请执行以下步骤:

  1. 启动控制台程序。您可以在 /Applications/Utilities/Console 下找到它。
  2. 如果控制台最左边的图标显示“显示日志列表”,请单击该图标。第二列出现在左侧。
  3. 单击左侧窗格中的“控制台消息”。
  4. 搜索字符串无法读取外部扩展名。如果读取外部扩展文件时出现问题,您将看到一条错误消息。在其正上方查找另一条错误消息,它应该可以解释问题。例如,如果您看到以下错误:“Path /Library/Application Support/Google/Chrome isowned by the wrong group”,则需要使用 chgrp 或 Finder 的“获取信息”对话框将目录的组所有者更改为管理员组.
  5. 解决问题后,重新启动 Chrome。测试现在是否安装了外部扩展。一个权限错误可能会阻止 Chrome 检测到第二个错误。如果未安装外部扩展,请重复这些步骤,直到在控制台应用程序中看不到错误为止。

# Using the Windows registry(使用 Windows 注册表)

  1. 在注册表中查找或创建以下项:

    • 32-bit Windows: HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
    • 64-bit Windows: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
  2. 在 Extensions 键下创建一个与您的扩展 ID 同名的新键(文件夹)(例如,aaaaaaaaaabbbbbbbbbbcccccccccc)。

  3. 在您的扩展程序密钥中,创建一个属性“update_url”,并将其设置为值:“https://clients2.google.com/service/update2/crx”(这指向 Chrome 网上应用店中您的扩展程序的 crx) :

    {
     "update_url": "https://clients2.google.com/service/update2/crx"
    }
    1. 启动浏览器并转到 chrome://extensions;您应该会看到列出的扩展名。

# Updating and uninstalling(更新和卸载)

每次浏览器启动时,谷歌浏览器都会扫描首选项和注册表中的元数据条目,并对已安装的外部扩展程序进行必要的更改。

要将扩展更新为新版本,请更新文件,然后在首选项或注册表中更新版本。

要卸载您的扩展程序(例如,如果您的软件已卸载),请从注册表中删除您的首选项文件 (aaaaaaaaaabbbbbbbbbbcccccccccc.json) 或元数据。

# FAQ

本节回答有关外部扩展的常见问题。

从 M33 开始,Google Chrome 是否仍支持允许“预安装”的方法?

是的,但只能从 Chrome 网上应用店 update_URL 安装,而不是从本地文件路径安装。

我可以指定一个 URL 作为外部扩展的路径吗?

是的,对 Mac OS X 和 Linux 使用首选项 JSON 文件; Windows 的注册表。必须按照托管中的说明托管扩展程序hosting.在首选项文件中,使用“external_update_url”属性指向具有扩展程序 URL 的更新清单。在 Windows 注册表中,使用“update_url”属性。

使用首选项文件安装时有哪些常见错误?
  • 未指定与 .crx 中列出的 ID/版本相同的 ID/版本
  • .json 文件 (aaaaaaaaaaabbbbbbbbbbcccccccccc.json) 位于错误位置或指定的 ID 与扩展 ID 不匹配。
  • JSON 文件中的语法错误(忘记用逗号分隔条目或在某处留下尾随逗号)
  • JSON 文件条目指向 .crx 的错误路径(或指定的路径但没有文件名)
  • UNC 路径中的反斜杠未转义(例如,“\\server\share\file”是错误的;它应该是“\\\\server\\share\\extension”)
  • 网络共享权限问题
使用注册表安装时有哪些常见错误?
  • 未指定与 Chrome 网上应用店中列出的 ID/版本相同的 ID/版本
  • 在注册表中错误的位置创建的密钥
  • 注册表项指向 Chrome 网上应用店中 .crx 文件的错误路径
  • 网络共享权限问题
如何逐步更新我的本机二进制文件和扩展?

以前,当支持店外扩展时,可以在锁定步骤中更新本机二进制文件和扩展。但是,Chrome Web Store 上托管的扩展程序是通过开发人员无法控制的 Chrome 更新机制进行更新的。扩展开发人员应该小心更新依赖于本机二进制文件的扩展(例如,使用 NPAPI 的遗留扩展)。

如果用户卸载扩展怎么办?

如果用户通过 UI 卸载扩展,则不会再在每次启动时安装或更新。换句话说,外部扩展被列入阻止名单。

我如何摆脱阻止列表?

如果用户卸载了您的扩展程序,您应该尊重该决定。但是,如果您(开发人员)不小心通过 UI 卸载了您的扩展程序,您可以通过 UI 正常安装扩展程序,然后将其卸载,从而删除阻止列表标记。

By.一粒技术服务.

results matching ""

    No results matching ""