其他部署方式
通常,用户自己安装扩展程序。然而有时候您可能希望扩展程序自动安装,如下是两个典型案例:
- 扩展程序与其他软件有联系,并且用户安装软件时也应该同时安装扩展程序,在用户卸载软件时扩展程序也应该同时被卸载。
- 网络管理员希望在整个公司安装同样的扩展程序。
自动安装的扩展程序称为外部扩展程序。Google Chrome 浏览器支持两种安装外部扩展程序的方式:
- 使用首选项 JSON 文件(仅用于 Mac OS X 和 Linux)
- 使用 Windows 注册表(仅用于 Windows)
这两种方式都支持安装托管在更新
URL 上的扩展程序。在 Windows 注册表中,update_url
必须指向 Chrome 网上应用店中扩展程序的所在位置。
在首选项文件中,它可以指向您自己托管扩展程序的服务器(参见自动更新),首选项 JSON
文件还支持通过用户计算机上的 .crx
文件安装扩展程序(参见托管)。
从您的网站安装扩展程序:对于您的用户来说,最安全的选择就是将您的扩展程序发布到 Chrome 网上应用店。不是自己托管扩展程序,而是在网上应用店中发布,并通过内嵌安装链接到网上应用店进行安装。
在您开始前
首先,在网上应用店发布扩展程序或打包为 .crx
文件并确保它能够成功安装。
在
Windows 中必须从 Chrome 网上应用店安装扩展程序:
从 Chrome 33 开始,不再允许从本地 .crx
路径安装外部扩展程序(参见Protecting Windows users from malicious extensions(保护 Windows
用户,避免恶意扩展程序))。
编辑首选项文件或者注册表前,请先记录以下内容:
-
打算存放扩展程序
.crx
文件的位置,或者托管扩展程序的更新 URL。 - 扩展程序的版本(来自清单文件或者 chrome://extensions 页面)
- 扩展程序的标识符(加载已打包的扩展程序后可以从 chrome://extensions 页面获得)
以下例子假定版本为 1.0
,标识符为
aaaaaaaaaabbbbbbbbbbcccccccccc
。
使用首选项文件
仅用于 Mac OS X 和 Linux:不要在 Windows 中使用首选项文件,而应该使用 Windows 注册表。
-
如果您从文件安装,确保
.crx
扩展程序文件在您需要安装扩展程序的计算机上可用。(将它复制到本地目录或者网络共享,例如\\server\share\extension.crx
或/home/share/extension.crx
。) -
在下面列出的某一个文件夹中创建以下名称的文件:
aaaaaaaaaabbbbbbbbbbcccccccccc.json
,其中文件名(不包括扩展名)对应于您的扩展程序标志符。文件的位置取决于操作系统。- Mac OS X:
- 用于某个特定用户:
~USERNAME/Library/Application Support/Google/Chrome/External Extensions/
用于所有用户:/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
确保所有人都能读取extensions/aaaaaaaaaabbbbbbbbbbcccccccccc.json
。
-
如果您从文件安装的话,通过
"external_crx" 与
"external_version"
字段在以上创建的文件中指定扩展程序的位置与版本。
例如:
{ "external_crx": "/home/share/extension.crx", "external_version": "1.0" }
注意: 在指定的位置中您必须为所有
\
字符转义。例如,\\server\share\extension.crx
应该是"\\\\server\\share\\extension.crx"
。如果您从更新 URL 安装,请在名为 "external_update_url" 的字段中指定扩展程序的更新 URL。
例如:{ "external_update_url": "http://myhost.com/mytestextension/updates.xml" }
如果您只需要为某些浏览器语言安装扩展程序,您可以在名为 "supported_locales" 的字段中列出支持的语言。可以指定诸如 "en" 之类的语言,这样扩展程序将为所有像 "en-US"、"en-GB" 等这样的英语语言安装。选择了扩展程序不支持的另一种语言,外部扩展程序将会被卸载。如果没有 "supported_locales" 列表,扩展程序将为所有语言安装。
例如:{ "external_update_url": "http://myhost.com/mytestextension/updates.xml", "supported_locales": [ "en", "fr", "de" ] }
- 保存 JSON 文件。
- 运行 Google Chrome 浏览器,并进入 chrome://extensions,您应该会看到列出的扩展程序。
注意:以前版本的 Google Chrome 浏览器使用
external_extensions.json
文件指定要安装哪些扩展程序,这种方式已弃用,您应该为每一个扩展程序使用单独的
.json
文件。
Mac OS 权限问题疑难解答
在 Mac OS 中,只有系统权限阻止未授权的用户更改它时,才会读取外部扩展程序文件。如果 Chrome 浏览器运行后您没有看见已安装的外部扩展程序文件,可能是因为外部扩展程序的首选项文件有权限问题。要确定是否是这一问题,请遵循如下步骤:
- 运行控制台程序。您可以在应用程序/实用工具/控制台找到它。
- 如果控制台最左边的图标为“显示日志列表”,单击该图标,左侧会出现新的一列。
- 单击左侧窗格中的“控制台消息”。
-
搜索无法读取外部扩展程序(Can not read external
extensions)这一字符串。如果读取外部扩展程序文件过程中发生问题,您将会找到错误消息。寻找直接在它上方的另一个错误消息,它应该会描述这一问题。例如,如果您看到了如下错误:“路径 /Library/Application Support/Google/Chrome 的所有者不正确”(Path /Library/Application Support/Google/Chrome is owned by the wrong group),您需要使用
chgrp
或 Finder 的信息对话框将目录的所有者更改为管理员组。 - 修复这一问题后,重新启动 Chrome 浏览器,看看外部扩展程序现在是否安装。一个权限错误可能会使 Chrome 浏览器不能检测到第二个错误。如果外部扩展程序还没有安装,重复这些步骤,直到您在控制台应用程序中看不到错误。
使用 Windows 注册表
-
在注册表中寻找或创建如下键:
- 32 位 Windows:
HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
- 64 位 Windows:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
- 32 位 Windows:
-
在 Extensions 键下创建一个新键(文件夹),名称与您的扩展程序标识符相同(例如,
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 浏览器在每一次启动时扫描首选项文件中的元数据项以及注册表,对已安装的外部扩展程序做出必要的更改。
要将您的扩展程序更新到新的版本,请更新相应的文件,并更新首选项文件或注册表中的版本。
要卸载您的扩展程序(例如,如果您的软件卸载了),请删除首选项文件(aaaaaaaaaabbbbbbbbbbcccccccccc.json)或者从注册表中删除元数据。
常见问题
这一部分回答有关外部扩展程序的常见问题。
允许“预装”扩展程序的方法从 Google Chrome 33 开始是否仍然支持?
仍然支持,但是只能从 Chrome 网上应用店的 update_url
安装,而不允许本地文件路径。
我能否将 URL 指定为指向外部扩展程序的路径?
可以,在 Mac OS X 和 Linux 下使用首选项 JSON
文件,在 Windows 下使用注册表。扩展程序必须按照托管部分描述的那样正确托管。在首选项文件中,使用
"external_update_url"
属性指向更新清单,包含您的扩展程序的 URL;在 Windows 注册表中,则使用 update_url
属性。
使用首选项文件安装时的常见问题有哪些?
-
指定的标识符、版本与
.crx
文件中不同 -
.json
文件(
aaaaaaaaaabbbbbbbbbbcccccccccc.json
)的位置不正确 - JSON 文件中有语法错误(忘记用逗号分隔项目或者某处遗漏行尾的逗号)
-
JSON 文件项指向的
.crx
路径不正确(或者指定的路径不包含文件名) -
UNC 路径中的反斜杠没有转义(例如,
"\\server\share\file"
是错误的,应该是"\\\\server\\share\\extension"
) - 网络共享的权限问题
使用注册表安装时的常见问题有哪些?
- 指定的标识符、版本与 Chrome 网上应用店中不同
- 键在注册表中创建的位置不对
-
注册表项指向的 Chrome 网上应用店
.crx
文件路径不正确 - 网络共享的权限问题
我应该如何一步到位更新原生二进制文件和扩展程序?
以前支持网上应用店以外的扩展程序时,可以一次性更新原生二进制文件和扩展程序。而现在,Chrome 网上应用店中托管的扩展程序通过 Chrome 浏览器的更新机制更新,开发者并不能控制。扩展程序开发者在更新依赖于原生二进制文件的扩展程序(例如使用 NPAPI 的旧式扩展程序)时要特别注意。
如果用户卸载了扩展程序怎么办?
如果用户通过用户界面卸载了扩展程序,在启动时将不会再安装或更新这一扩展程序。换句话说,这一扩展程序进入了黑名单。
我应该如何从黑名单中去掉我的扩展程序?
如果用户卸载了您的扩展程序,您应该尊重这一决定。然而,如果您(开发者)意外地通过用户界面卸载了您的扩展程序,您可以通过用户界面正常安装扩展程序,然后卸载,移除黑名单标记。