我正在尝试在自己的服务器上托管Chrome扩展程序。我有一个非常奇怪的问题,每隔一段时间我就会通过将浏览器指向.crx来安装扩展程序,它会安装一个带有不同appid
的扩展版本,其代码库可以追溯到几个星期前。
我怀疑我在某种程度上有2个扩展ID。一个代表当前的代码库,另一个代表了前一段时间进入混合代码。
有没有办法可以防止这种混乱发生?
更长的说明
在我的扩展开发过程的最开始,我的manifest.json中的版本号被设置为“1.0”一段时间。
一旦开发开始稳定,我会将版本号重置为“0.0.1”,并在每次推送更改时将其从该点开始碰撞。
每当我碰到版本号时,我都会将扩展名和scp
打包到我的服务器上。该过程的重要部分如下:
打包扩展程序:
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' --pack-extension=<PATH TO UNPACKED EXTENSION> --pack-extension-key=<GENERATED KEY>
这是我第一次打包扩展程序时由chrome生成的.pem
私钥(我想,自从我前一次打包以来很难记住)。
将.crx复制到服务器:
scp -P <PORT> extension.crx <PATH TO SERVER>
将update.xml复制到服务器:
scp -P <PORT> update.xml <PATH TO SERVER>
update.xml:
这是标准的update.xml文件。版本号和.crx位置符合预期。唯一可能有趣的是appid
。我一度从Chrome扩展程序管理页面获得此appid
。
<?xml version="1.0" encoding="UTF-8"?>
<gupdate xmlns="http://www.google.com/update2/response" protocol="2.0">
<app appid="cdlhmlllfilohhmmpakbcdfaabannega">
<updatecheck codebase="<EXTENSION CRX LOCATION>" version="0.0.21"/>
</app>
</gupdate>
此时,我可以ssh进入我的服务器,在那里解压扩展,检查版本号并阅读代码库,所有内容都将按预期更新。
然后,我会将浏览器指向<EXTENSION CRX LOCATION>
并安装扩展程序。版本号错误,appid
与update.xml
中的版本号不匹配,代码库将从几周前开始。
答案 0 :(得分:0)
XML和manifest.json
中的扩展ID必须相同。
对于未来的读者:当使用相同的.pem
时,扩展名仅可以使用相同的扩展ID打包。
有关Chrome网上应用店中extensionID的问题,请参阅:
•Packaging > Uploading a previously packaged extension to the Chrome Web Store