在看这篇文章之前,你可以有两个选择:
- 网上下载这一工具,一键离线安装插件(注意:博主非工具作者,不保证此工具安全性,请自行分析),然后关闭此文章。
- 继续看下去搞懂原理,然后自己手动离线安装插件或编写一个属于自己的离线安装工具。
首先进入扩展程序的管理页面,在地址栏敲入即可进入。
然后把右上角的打开(刚不是说无需这个模式吗?别急,暂时的。),拖入插件进行添加,复制插件的后关闭即可。如图所示:
接着关闭,将以下内容复制粘贴到记事本上保存,将文本后缀名改为,双击运行。
若要添加多个插件,以此类推往下添加、……
最后重新打开后插件就可以正常使用了,如安装的插件没有立即启用,可直接到扩展程序管理页面里手动开启。
获取插件公钥和版本号
这里需要从包头提取公钥和版本号(制作插件时命名的版本号)以作备用。
CRX 包的头信息
头信息包含作者的公共密钥和扩展程序的签名,签名以算法使用作者的私有密钥从文件生成。头信息要求字节顺序为小端序并以4字节对齐。下表按顺序描述的头信息:
例子:
获取插件ID
插件的可以从插件的公钥得到,经过如下计算:
示例代码:
重命名和移动插件
将插件重命名为,移动到(没有就新建)处作为插件存放路径。
部署安装
在注册表添加插件信息,启动时会自动安装。
在注册表添加以插件ID命名的项,以及插件存放路径、插件版本号两个字符串值,而值就是从包头获取的版本号。如图:
添加白名单
在注册表添加以数字命名的字符串值,其数值数据为插件ID。(与上述的手动化安装方法中导入一样,只是编程时直接操作注册表即可)
如果安装插件部署安装成功后又卸载掉了插件,第二次安装时就不会自动安装,这是因为目录下的记录了该插件的卸载信息,要想解决这个问题,一是直接删除文件(这会导致的个人设置偏好丢失,即恢复出厂设置),二是修改,将该插件的卸载信息剔除掉(太麻烦)。
博主个人觉得比较舒服的做法是重新打包插件,即每次安装该插件前,都经过这一步骤。因为插件在不指定密钥进行打包时会自动生成随机密钥,而公钥又是从密钥中获得,所以插件ID也会是随机的,随着插件ID的更新,中该插件对应的插件ID卸载信息就会失效,从而达到每次安装都是的效果。
和手动打包不同,通过编程的方式打包当然不可能傻傻地去操作界面,这里用到一个的打包命令,可指定一个密钥打包,也可不指定,这会随机生成一个后缀为的密钥(当然,也可以自己生成一个)。命令如下: