命令行打包Chrome插件
本文介绍了如何打包、托管和更新通用 Web 服务器中的 crx 文件。
1. 制作.crx 扩展程序安装包1.1. 手动制作.crx在 Chrome 浏览器输入框中输入 chrome://extensions/打开扩展程序管理界面,或点击 Chrome 菜单,将光标悬停在“更多工具”上,然后选择“扩展程序”。
在“扩展程序管理”页面上,点击开发者模式旁边的切换开关来启用开发者模式。然后选择打包扩展程序按钮。
在“扩展程序根目录”字段中指定扩展程序文件夹的路径,然后点击打包扩展程序按钮。对于首次打包扩展程序,请忽略 Private key 字段。
Chrome 将创建两个文件:一个 .crx 文件和一个包含扩展程序私钥的 .pem 文件。
切勿丢失私钥!请将 .pem 文件保存在安全可靠的地方;更新扩展程序时需要用到此文件。
1.1.1. 更新.crx 扩展程序安装包通过增加 manifest.json 中的版本号来更新扩展程序的 .crx 文件。
12345678{ ... "version": "1.5", ... }}返回扩展程序管理界面,然后点击打包扩展程序按钮。指定扩展程序目录的路径以及私钥的位置。
点击打包扩展程序按钮生产新的.crx 文件。
1.2. 通过命令行打包通过调用 chrome.exe 在命令行中打包扩展程序。使用 –pack-extension 标志可指定扩展程序的文件夹位置,使用 –pack-extension-key 标志可指定扩展程序私钥文件的位置。
123456789# For windowschrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem# For fedoragoogle-chrome --pack-extension=path_to_your_chrome_plugin_source -pack-extension-key=path_to_your_chrome_extension_key# 例如google-chrome --pack-extension=~/sourceRepo/chrome_plugin -pack-extension-key=~/sourceRepo/chrome_plugin.pem2. 托管托管 .crx 文件的服务器必须使用适当的 HTTP 标头,以便用户通过点击链接来安装扩展程序。
如果满足以下任一条件,Google Chrome 就会将文件视为可安装:
该文件的内容类型为 application/x-chrome-extension文件后缀为 .crx,并且满足以下两个条件:文件不会使用 HTTP 标头 X-Content-Type-Options: nosniff 提供文件包含以下内容之一:空字符串“text/plain”“application/octet-stream”“unknown/unknown”“application/unknown”“/“无法识别可安装文件的最常见原因是服务器发送了标头 X-Content-Type-Options: nosniff。第二个最常见的原因是服务器发送的内容类型未知,即不在上一个列表中。如需解决 HTTP 标头问题,请更改服务器的配置或尝试在其他服务器上托管 .crx 文件。
2.1. 更新浏览器每隔几小时就会检查已安装的扩展程序,看是否有更新网址。对于每个扩展程序,它会向更新网址发出请求,以查找更新清单 XML 文件。
更新检查返回的内容是一个 XML 格式的更新清单,其中列出了相应扩展程序的最新版本。
如果更新清单中的版本高于安装的版本,浏览器就会下载并安装新版本。
新版本的.crx 扩展程序必须使用与当前已安装的版本相同的私钥签名。
注意:为了保护用户隐私,Google Chrome 不会在自动更新清单请求中发送任何 Cookie 标头,并且会忽略对这些请求的响应中的所有 Set-Cookie 标头。
2.1.1. 更新网址在 Chrome 应用商店以外的服务器上托管的扩展程序必须在其 manifest.json 文件中包含 update_url 字段。
Linux 是唯一一个可供 Chrome 用户安装非 Chrome 应用商店托管的扩展程序的平台。
12345678{ "name": "My extension", ... "update_url": "https://myhost.com/mytestextension/updates.xml", ...}2.1.2. 更新清单服务器返回的更新清单应为 XML 文档。
123456
appid: 扩展程序 ID 根据公钥的哈希值生成,如打包中所述。扩展程序的 ID 会显示在“扩展程序管理”页面上代码库: 指向 .crx 文件的 HTTPS 网址。版本: 由客户端用于确定是否应下载 codebase 指定的 .crx 文件。它应与 .crx 文件的 manifest.json 文件中“version”的值一致。更新清单可能会通过添加多个元素来包含有关多个扩展程序的信息。
3. troubleshooting问题 1: 当点击.crx 文件下载按钮时,报错”程序包无效:CRX_REQUIRED_PROOF_MISSING“
https://support.google.com/chrome/thread/7757612/what-does-crx-required-proof-missing-mean-when-trying-to-install-a-chrome-extension?hl=en
4. 参考文档在只有命令行界面的服务器上打包 Chrome 扩展
在 Linux 上安装扩展程序
crx is a utility to package Google Chrome extensions via a Node API
Webpack Plugin for a chrome extension build