This page was saved using WebZIP 7.0.3.1030 offline browser on 12/24/13 11:31:36.
Address: https://crxdoc-zh.appspot.com/extensions/external_extensions.html
Title: 其他部署方式 - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 36166

其他部署方式

通常,用户自己安装扩展程序。然而有时候您可能希望扩展程序自动安装,如下是两个典型案例:

自动安装的扩展程序称为外部扩展程序。Google Chrome 浏览器支持两种安装外部扩展程序的方式:

这两种方式都支持在用户的计算机上安装来自 .crx 文件的扩展程序,首选项 JSON 文件还支持安装已托管在更新 URL 的扩展程序。有关托管扩展程序的详情,请参见托管

在您开始前

首先,将扩展程序打包.crx 文件并确保它能够成功安装。

如果您希望从更新 URL安装,确保扩展程序已正确托管

然后,在您编辑首选项文件或者注册表前,请先记录一下内容:

以下例子假定版本为 1.0,标识符为 aaaaaaaaaabbbbbbbbbbcccccccccc

使用首选项文件

Windows 用户请注意:bug 41902 修复之前,您可能需要使用 Windows 注册表,而不是首选项文件。

注意: 以前版本的 Google Chrome 浏览器使用 external_extensions.json 文件来指定要安装的扩展程序。该文件已弃用,建议为每一个扩展程序使用单独的 .json 文件。

  1. 如果您从文件安装,确保 .crx 扩展程序文件在您需要安装扩展程序的计算机上可用。(将它复制到本地目录或者网络共享,例如 \\server\share\extension.crx/home/share/extension.crx。)
  2. 在下面列出的某一个文件夹中创建以下名称的文件:aaaaaaaaaabbbbbbbbbbcccccccccc.json,其中文件名(不包括扩展名)对应于您的扩展程序标志符。文件的位置取决于操作系统。
    Windows
    chrome_root\Application\chrome_version\Extensions\
    例如:c:\Users\Me\AppData\Local\Google\Chrome\Application\6.0.422.0\Extensions\
    Mac OS X
    用于某个特定用户:~USERNAME/Library/Application Support/Google/Chrome/External Extensions/
    用于所有用户:/Library/Application Support/Google/Chrome/External Extensions/

    只有路径中每一个目录的所有者都是 root,属于 adminwheel组,并且不是所有人都具有写入权限,才会读取用于所有用户的外部扩展程序文件。另外,路径还不能包含符号链接。这些限制确保未授权的用户不能使扩展程序为所有用户安装。有关详情请参见疑难解答

    注意:以上用于所有用户的路径在 Chrome 16 中添加,之前的版本使用另一个路径:
    /Applications/Google Chrome.app/Contents/Extensions/,该路径在版本 17 中弃用,在版本 20 中不再支持。请使用以上列出的某一个路径。

    Linux
    /opt/google/chrome/extensions/
    /usr/share/google-chrome/extensions/
    注意:如果有必要的话使用 chmod 确保所有人都能读取 extensions/aaaaaaaaaabbbbbbbbbbcccccccccc.json
  3. 如果您从文件安装的话,通过 "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" ]
    }
  4. 保存 JSON 文件。
  5. 运行 Google Chrome 浏览器,并进入 chrome://extensions,您应该会看到列出的扩展程序。

Mac OS 权限问题疑难解答

在 Mac OS 中,只有系统权限阻止未授权的用户更改它时,才会读取外部扩展程序文件。如果 Chrome 浏览器运行后您没有看见已安装的外部扩展程序文件,可能是因为外部扩展程序的首选项文件有权限问题。要确定是否是这一问题,请遵循如下步骤:

  1. 运行控制台程序。您可以在应用程序/实用工具/控制台找到它。
  2. 如果控制台最左边的图标为“显示日志列表”,单击该图标,左侧会出现新的一列。
  3. 单击左侧窗格中的“控制台消息”。
  4. 搜索无法读取外部扩展程序(Can not read external extensions)这一字符串。如果读取外部扩展程序文件过程中发生问题,您将会找到错误消息。寻找直接在它上方的另一个错误消息,它应该会描述这一问题。例如,如果您看到了如下错误:“路径 /Library/Application Support/Google/Chrome 的所有者不正确”(Path /Library/Application Support/Google/Chrome is owned by the wrong group),您需要使用 chgrp 或 Finder 的信息对话框将目录的所有者更改为管理员组。
  5. 修复这一问题后,重新启动 Chrome 浏览器,看看外部扩展程序现在是否安装。一个权限错误可能会使 Chrome 浏览器不能检测到第二个错误。如果外部扩展程序还没有安装,重复这些步骤,直到您在控制台应用程序中看不到错误。

使用 Windows 注册表

  1. 确保 .crx扩展程序文件在您需要安装扩展程序的计算机上可用。(将它复制到本地目录或者网络共享,例如 \\server\share\extension.crx。)
  2. 在注册表中寻找或创建如下键:
    • 32 位 Windows:HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
    • 64 位 Windows:HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
  3. Extensions 键下创建一个新键(文件夹),名称与您的扩展程序标识符相同(例如,aaaaaaaaaabbbbbbbbbbcccccccccc)。
  4. 创建两个字符串值(REG_SZ),分别名为"path"和"version",并分别设置为扩展程序的位置和版本。例如:
    • path: \\server\share\extension.crx
    • version: 1.0
  5. 运行浏览器,并进入 chrome://extensions,您应该看到列出的扩展程序。

更新和卸载

Google Chrome 浏览器在每一次启动时扫描首选项文件中的元数据项以及注册表,对已安装的外部扩展程序做出必要的更改。

要将您的扩展程序更新到新的版本,请更新相应的文件,并更新首选项文件或注册表中的版本。

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

常见问题

这一部分回答有关外部扩展程序的常见问题。


我能否将 URL 指定为指向外部扩展程序的路径?

如果您使用了首选项 JSON 文件的话就可以,扩展程序必须按照托管部分描述的那样正确托管。使用 "external_update_url" 属性指向更新清单,包含您的扩展程序的 URL。


使用首选项文件安装时的常见问题有哪些?


使用注册表安装时的常见问题有哪些?


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

如果用户通过用户界面卸载了扩展程序,在启动时将不会再安装或更新这一扩展程序。换句话说,这一扩展程序进入了黑名单。


我应该如何从黑名单中去掉我的扩展程序?

如果用户卸载了您的扩展程序,您应该尊重这一决定。然而,如果您(开发者)意外地通过用户界面卸载了您的扩展程序,您可以通过用户界面正常安装扩展程序,然后卸载,移除黑名单标记。