该页面翻译自 Google Chrome Extensions 与 Google Chrome Apps。除非特别说明,该页面的内容遵循 Creative Commons Attribution 3.0 License,代码示例遵循 BSD License。
通常,用户自己安装扩展程序。然而有时候您可能希望扩展程序自动安装,如下是两个典型案例:
自动安装的扩展程序称为外部扩展程序。Google Chrome 浏览器支持两种安装外部扩展程序的方式:
这两种方式都支持在用户的计算机上安装来自
.crx
文件的扩展程序,首选项 JSON
文件还支持安装已托管在更新
URL 的扩展程序。有关托管扩展程序的详情,请参见托管。
首先,将扩展程序打包为
.crx
文件并确保它能够成功安装。
然后,在您编辑首选项文件或者注册表前,请先记录一下内容:
.crx
文件的位置,或者托管扩展程序的更新 URL。
以下例子假定版本为 1.0
,标识符为
aaaaaaaaaabbbbbbbbbbcccccccccc
。
Windows 用户请注意:在 bug 41902 修复之前,您可能需要使用 Windows 注册表,而不是首选项文件。
注意:
以前版本的 Google Chrome 浏览器使用
external_extensions.json
文件来指定要安装的扩展程序。该文件已弃用,建议为每一个扩展程序使用单独的
.json
文件。
.crx
扩展程序文件在您需要安装扩展程序的计算机上可用。(将它复制到本地目录或者网络共享,例如
\\server\share\extension.crx
或 /home/share/extension.crx
。)
aaaaaaaaaabbbbbbbbbbcccccccccc.json
,其中文件名(不包括扩展名)对应于您的扩展程序标志符。文件的位置取决于操作系统。
chrome_root\Application\chrome_version\Extensions\
c:\Users\Me\AppData\Local\Google\Chrome\Application\6.0.422.0\Extensions\
~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 中不再支持。请使用以上列出的某一个路径。
/opt/google/chrome/extensions/
/usr/share/google-chrome/extensions/
chmod
确保所有人都能读取
extensions/aaaaaaaaaabbbbbbbbbbcccccccccc.json
。
例如:
{ "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" ] }
在 Mac OS 中,只有系统权限阻止未授权的用户更改它时,才会读取外部扩展程序文件。如果 Chrome 浏览器运行后您没有看见已安装的外部扩展程序文件,可能是因为外部扩展程序的首选项文件有权限问题。要确定是否是这一问题,请遵循如下步骤:
chgrp
或 Finder 的信息对话框将目录的所有者更改为管理员组。
.crx
扩展程序文件在您需要安装扩展程序的计算机上可用。(将它复制到本地目录或者网络共享,例如
\\server\share\extension.crx
。)
HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
aaaaaaaaaabbbbbbbbbbcccccccccc
)。
REG_SZ
),分别名为"path"和"version",并分别设置为扩展程序的位置和版本。例如:
\\server\share\extension.crx
1.0
Google Chrome 浏览器在每一次启动时扫描首选项文件中的元数据项以及注册表,对已安装的外部扩展程序做出必要的更改。
要将您的扩展程序更新到新的版本,请更新相应的文件,并更新首选项文件或注册表中的版本。
要卸载您的扩展程序(例如,如果您的软件卸载了),请删除首选项文件(aaaaaaaaaabbbbbbbbbbcccccccccc.json)或者从注册表中删除元数据。
这一部分回答有关外部扩展程序的常见问题。
我能否将 URL 指定为指向外部扩展程序的路径?
如果您使用了首选项 JSON 文件的话就可以,扩展程序必须按照托管部分描述的那样正确托管。使用 "external_update_url" 属性指向更新清单,包含您的扩展程序的 URL。
使用首选项文件安装时的常见问题有哪些?
.crx
文件中不同
aaaaaaaaaabbbbbbbbbbcccccccccc.json
)的位置不正确
.crx
路径不正确(或者指定的路径不包含文件名)
"\\server\share\file"
是错误的,应该是 "\\\\server\\share\\extension"
)
使用注册表安装时的常见问题有哪些?
.crx
文件中不同
.crx
文件路径不正确(或者指定的路径不包含文件名)
如果用户卸载了扩展程序怎么办?
如果用户通过用户界面卸载了扩展程序,在启动时将不会再安装或更新这一扩展程序。换句话说,这一扩展程序进入了黑名单。
我应该如何从黑名单中去掉我的扩展程序?
如果用户卸载了您的扩展程序,您应该尊重这一决定。然而,如果您(开发者)意外地通过用户界面卸载了您的扩展程序,您可以通过用户界面正常安装扩展程序,然后卸载,移除黑名单标记。