所有 Chrome 扩展程序都必须直接通过 Chrome 应用商店或使用下述机制分发。不遵守上述任一分发方法即违反了 Chrome 扩展程序政策,并且可能会导致相应扩展程序和/或分发该扩展程序的软件被标记为垃圾软件。
用户通常会从 Chrome 应用商店安装扩展程序,但有时您可能希望通过其他方式安装扩展程序。下面是两种典型的情况:
- 某个扩展程序与其他一些软件相关联,只要用户安装该软件,就应该安装该扩展程序。
- 某位网络管理员想要在其整个组织中安装相同的扩展程序。
不是从 Chrome 应用商店安装的扩展程序称为外部扩展程序。 对于希望在安装其他软件的过程中分发扩展程序的开发者,或者希望在整个组织中分发扩展程序的网络管理员,Google Chrome 支持以下扩展程序安装方法:
- 使用偏好设置 JSON 文件(仅适用于 Mac OS X 和 Linux)
- 使用 Windows 注册表(仅适用于 Windows)
这两种方式都支持安装托管在 update_URL
上的扩展程序。在 Windows 和 Mac 上,update_URL
必须指向必须托管扩展程序的 Chrome 应用商店。
Linux 上的偏好设置文件可以指向您自己托管扩展程序的服务器。
偏好设置 JSON 文件还支持从用户的 Linux 计算机上的 .crx
扩展程序文件安装扩展程序。
准备工作
首先,在 Chrome 应用商店中publish该扩展程序,或打包一个 .crx
文件并确保其能够成功安装。
在修改偏好设置文件或注册表之前,请注意以下事项:
- 扩展程序
.crx
文件的预期位置,或提供该扩展程序的更新网址 - 扩展程序的版本(来自清单文件或 chrome://extensions 页面)
- 扩展程序的 ID(加载的扩展程序来自 chrome://extensions 页面)
以下示例假定版本为 1.0
,ID 为 aaaaaaaaaabbbbbbbbbbcccccccccc
。
使用偏好设置文件
- 如果要通过 Linux 上的文件进行安装,请将
.crx
扩展程序文件提供给要安装该扩展程序的机器。(将其复制到本地目录或网络共享,例如,\\server\share\extension.crx
或/home/share/extension.crx
。) 在下列某个文件夹中创建一个使用以下名称的文件:
aaaaaaaaaabbbbbbbbbbcccccccccc.json
,其中文件名(不含扩展名)与您的扩展程序 ID 相对应。具体位置取决于操作系统。- Mac OS X:
对于特定用户:
~USERNAME/Library/Application Support/Google/Chrome/External Extensions/
对于所有用户:/Library/Application Support/Google/Chrome/External Extensions/
仅当路径中的每个目录都归用户
root
所有、属于admin
或wheel
组且不可全局写入时,所有用户的外部扩展程序文件才会被读取。路径还必须不包含符号链接。这些限制可防止非特权用户为所有用户安装扩展程序。如需了解详情,请参阅问题排查。- Linux:
/opt/google/chrome/extensions/
/usr/share/google-chrome/extensions/
注意:如有必要,请使用
chmod
以确保aaaaaaaaaabbbbbbbbbbcccccccccc.json
文件是全局可读的。
仅限 Linux:如果要通过文件安装,请在上面创建的文件中使用名为“external_crx”和“external_version”的字段指定扩展程序的位置和版本。
- 例如:
json { "external_crx": "/home/share/extension.crx", "external_version": "1.0" }
- 注意:您需要对每一个
\` character in the location. For example,
\server\share\extension.crxwould be
"\\server\share\extension.crx"` 进行转义。 - 如果您通过更新网址安装,请使用字段名称“external_update_url”指定扩展程序的更新网址。
- 通过本地 .crx 文件安装的示例(仅限 Linux):
json { "external_update_url": "http://myhost.com/mytestextension/updates.xml" }
- 通过 Chrome 应用商店安装的示例(Mac 和 Linux):
json { "external_update_url": "https://clients2.google.com/service/update2/crx" }
- 如果您只想为某些浏览器语言区域安装扩展程序,则可以在字段名称“supported_locale”中列出受支持的语言区域。语言区域可以指定父语言区域(如“en”),在这种情况下,系统会为所有英语语言区域(如“en-US”“en-GB”等)安装该扩展程序。如果选择了扩展程序不支持的其他浏览器语言区域,系统将卸载外部扩展程序。如果缺少“supported_locales”列表,系统将为任何语言区域安装扩展程序。
- 例如:
json { "external_update_url": "https://clients2.google.com/service/update2/crx", "supported_locales": [ "en", "fr", "de" ] }
保存 JSON 文件。
启动 Google Chrome,然后转到 chrome://extensions;您应该会看到该扩展程序已列出。
排查 Mac OS 权限问题
在 Mac OS 上,只有当文件系统权限阻止无特权用户更改这些文件时,系统才会读取所有用户的外部扩展程序文件。如果在 Chrome 启动后,您没有看到安装的外部扩展程序,则可能是外部扩展程序偏好设置文件存在权限问题。要确认这是否是问题所在,请按以下步骤操作:
- 启动 Play 管理中心计划。您可以在“/Applications/Utilities/Console”下找到它。
- 如果控制台最左侧的图标显示“显示日志列表”,则点击该图标。左侧会显示第二列。
- 点击左侧窗格中的“Console Messages”。
- 搜索字符串 Can not read external extensions。如果读取外部扩展文件时出现问题,您会看到一条错误消息。在正上方查找另一条错误消息,其中应该会说明问题所在。例如,如果您看到以下错误:“Path /Library/Application Support/Google/Chrome is own by the wrong group”,您需要使用
chgrp
或 Finder 的“获取信息”对话框将目录的群组所有者更改为管理员群组。 - 解决问题后,请重新启动 Chrome。测试外部扩展程序现已安装完毕。一个权限错误可能会使 Chrome 无法检测到第二个错误。如果未安装外部扩展程序,请重复上述步骤,直到您在 Console 应用中没有看到错误。
使用 Windows 注册表
- 在注册表中查找或创建以下项:
- 32 位 Windows:
HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
- 64 位 Windows:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
- 32 位 Windows:
- 在 Extensions 键下创建一个新密钥(文件夹),其名称与您的扩展程序的 ID 相同(例如
aaaaaaaaaabbbbbbbbbbcccccccccc
)。 在扩展程序键中,创建一个属性“update_url”,并将其值设为“https://clients2.google.com/service/update2/crx”(指向您的扩展程序在 Chrome 应用商店中的 crx):
{ "update_url": "https://clients2.google.com/service/update2/crx" }
启动浏览器并转到 chrome://extensions;您应该会看到系统列出了该扩展程序。
更新和卸载
Google Chrome 每次启动时都会扫描偏好设置和注册表中的元数据条目,并对已安装的外部扩展程序进行必要的更改。
如需将扩展程序更新到新版本,请更新文件,然后在偏好设置或注册表中更新版本。
如需卸载扩展程序(例如卸载软件),请从注册表中移除偏好设置文件 (aaaaaaaaaabbbbbbbbbbbbcccccccc.json) 或元数据。
FAQ
本部分将解答有关外部扩展程序的常见问题。
从 M33 开始,Google Chrome 是否仍支持“预安装”方法?
可以,但只能通过 Chrome 应用商店 update_URL
安装,而不能通过本地文件路径安装。
我可以将网址指定为外部扩展程序的路径吗?
可以。对于 Mac OS X 和 Linux,请使用偏好设置 JSON 文件;对于 Windows,请使用registry。必须按照托管中的说明托管扩展程序。在偏好设置文件中,使用“external_update_url”属性指向包含您的扩展程序网址的更新清单。在 Windows 注册表中,使用“update_url”属性。
使用偏好设置文件进行安装时有哪些常见错误?
- 指定的 ID/版本与
.crx
中所列的 ID/版本不一致 - .json 文件 (
aaaaaaaaaabbbbbbbbbbcccccccccc.json
) 位于错误的位置或指定的 ID 与扩展程序 ID 不匹配。 - JSON 文件中存在语法错误(忘记使用英文逗号分隔条目或在某处留下英文逗号)
- JSON 文件入口点指向
.crx
的错误路径(或指定了路径但未指定文件名) - UNC 路径中的反斜杠未转义(例如,
"\\server\share\file"
不正确;应为"\\\\server\\share\\extension"
) - 网络共享中的权限问题
使用注册表进行安装时有哪些常见错误?
- 指定的 ID/版本未与 Chrome 应用商店中列出的 ID/版本相同
- 密钥是在注册表中的错误位置创建的
- 注册表入口点指向 Chrome 应用商店中
.crx
文件的错误路径 - 网络共享中的权限问题
如何逐步更新原生二进制文件和扩展程序?
以前,如果支持离店扩展程序,可以在锁定步骤中更新原生二进制文件和扩展程序。不过,Chrome 应用商店中托管的扩展程序会通过 Chrome 更新机制进行更新,而该机制不受开发者控制。扩展程序开发者在更新依赖于原生二进制文件的扩展程序(例如,使用 NPAPI 的旧版扩展程序)时应格外小心。
如果用户卸载了扩展程序,会发生什么情况?
如果用户通过界面卸载该扩展程序,系统在每次启动时便不会再安装或更新该扩展程序。换言之,外部扩展程序已被列入屏蔽名单。
如何退出屏蔽名单?
如果用户卸载了您的扩展程序,您应该尊重该决定。不过,如果您(开发者)不小心通过界面卸载了扩展程序,则可以移除屏蔽名单标记,方法是通过界面正常安装扩展程序,然后将其卸载。