我有一个从chrome移植的firefox web扩展.这是一个特定于站点的扩展,我在我的Web服务器上托管这个扩展,以避免在开发人员中心上花费很长的时间.
用户通过我的网页上的按钮单击来安装扩展程序.假设扩展的当前版本是3.按钮单击处理程序是这样的
document.getElementById('install_ext').addEventListener('click', function (e) {
window.location.href = '/public/ffext_3.xpi';
});
Run Code Online (Sandbox Code Playgroud)
如果有新版本的扩展版本,比如版本4,我将删除现有的ffext_3.xpi文件,在公共文件夹中添加新的ffext_4.xpi文件,并将js中的href修改为'/public/ffext_4.xpi'服务器.如果扩展不存在,还有一些UI级别处理,如show install按钮,如果有更新,则显示更新按钮等
到目前为止,一切都在发挥作用.但是有一些机械方面的事情已经完成.
我必须手动修改js文件中的href.
用户必须在UI提示时手动更新扩展.
我试图使用InstallTrigger对象,但也有,我必须提供完整的xpi url,其中包含版本号.
document.getElementById('install_ext').addEventListener('click', function (e) {
var params = {
"MyExtension": {URL: 'https://addons.mozilla.org/firefox/downloads/file/12345/myext-0.1.2-fx.xpi',
IconURL: '/public/exticon.png',
Hash: 'sha1:1234567890abcdefghij1234567890abcdefghij',
toString: function () {
return this.URL;
}
}
};
InstallTrigger.install(params);
});
Run Code Online (Sandbox Code Playgroud)
每当我上传新的扩展程序时,我都不确定是否必须更新此URL.我试图避免审查延迟,所以,我不想使用InstallTrigger方式,除非它是自动更新用户浏览器上的扩展的唯一方法.
有没有办法在没有用户干预的情况下自动更新扩展?我想如果可以自动更新,我可以避免更改xpi的文件名,并将该href设为'/public/ffext.xpi'.我是对的还是我需要继续更新网址,即使有自动更新机制?