要在 Google Chrome 商店之外发布、部署和更新 Chrome 扩展程序,您必须遵循以下指南。
1.建筑
首先,有必要定义 CRX 和 XML 名称以及它们将被部署的 url。
关于这个例子的问题:
- CRX 名称将是
myCRX.crx,它将部署在 URL https://my.server/resources/myCRX.crx
- XML 名称将是
myXML.xml,它将部署在 URL https://my.server/resources/myXML.xml
2。 JSON 清单
正如this 链接中所指定的,update_url(可以找到更新 XML 的位置)必须包含在 JSON 清单中:为此,必须将以下行插入 JSON 文件。
{
[...],
"update_url": "https://my.server/resources/myXML.xml",
[...]
}
3. CRX 和私钥创建
可以按照this 指南创建 CRX 和 PEM。
在该过程结束时,将创建两个文件(一个 CRX 和一个 PEM):之后需要将它们分别重命名为 myCRX.crx 和 myPEM.pem。
4.公钥提取
可以通过在 PEM 所在的文件夹中执行以下命令来提取公钥:
openssl.exe rsa -in myPEM.pem -pubout > myPEM_pub.pem
之后,将创建一个包含公钥的新文件(名为 myPEM_pub.pem)。
5.扩展 ID 提取
可以按照this 指南执行扩展 ID 提取。
特别是,需要下载 extension_id.py 文件,将其复制到包含 myPEM_pub.pem 文件的文件夹中,然后在同一文件夹中执行以下命令:
python extension_id.py myPEM_pub.pem
注意:如果你使用的是 Python 3,你必须修改 extension_id.py 文件的第 94 行
with file(first_arg) as f:
到
with open(first_arg) as f:
命令输出如下:
[...]
Extension ID: <myExtensionID>
[...]
6. XML 文件创建
为了正确部署扩展,需要创建更新 XML 文件(在本示例中名为 myXML.xml)。
在这种情况下,它的内容是:
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='<myExtensionID>'>
<updatecheck codebase='https://my.server/resources/myCRX.crx' version='<myExtensionVersion>' />
</app>
</gupdate>
注意:需要用正确的值替换以下条目
-
<myExtensionID>,第 5 段的输出
-
https://my.server/resources/myCRX.crx,在第 1 段中定义
-
<myExtensionVersion>,在清单文件中定义
7.发布
为了正确配置环境,有必要将第 3 段中创建的 CRX 和第 6 段中创建的 XML 发布到第 1 段中定义的 url。
8.部署
可以按照this 指南进行扩展的部署。
特别是,需要将以下行添加到强制安装应用程序列表并扩展:
<myExtensionID>;https://my.server/resources/myXML.xml
注意:需要用正确的值替换以下条目
-
<myExtensionID>,第 5 段的输出
-
https://my.server/resources/myCRX.crx, 在段落中定义
1
9.更新 - 创建 CRX
为了更新扩展,需要创建一个新的 CRX 包,并使用更新的版本号(在本例中为 <myNewExtensionVersion>)。
可以按照this 指南创建 CRX。
注意:为了使此过程正常工作,必须选择第 3 段中创建的密钥 myPEM.pem。
10.更新 - 发布
为了发布更新,需要将第 9 段中创建的 CRX 重命名为 myCRX.crx,并修改第 6 段中创建的 XML 中的版本号(见下文)。
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='<myExtensionID>'>
<updatecheck codebase='https://my.server/resources/myCRX.crx' version='<myNewExtensionVersion>' />
</app>
</gupdate>
在那之后,为了执行更新必须做的最后一件事是在第 1 段中定义的 url 上发布 CRX 和 XML。