应用背景
在Web项目维护中,经常会遇到控件的安装及升级的工作。本博文将介绍如何实现allWebplugin中间件安装程序自动安装及升级。
alWebPlugin中间件核心优势
allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefox、Edge、360等浏览器,接口调用友好、集成方便。为用户提供“信息化系统 + allWebPlugin + 插件 + 浏览器”的解决方案。allWebplugin中间件已通过360安全检测,可放心使用。
1、自创定位算法,实现插件与页面布局无缝衔接,极致用户体验。
2、自创插件接口调用方法,保持原汁原味的接口调用及事件响应方式,轻松实现OA系统升级改造。
3、支持同一页面或不同页面同时加载多个插件,适应各种复杂应用场景。
4、自主创新、安全可控,不受浏览器插件技术限制,支持更多浏览器(谷歌、火狐、Edge、360浏览器等)。
5、创新沙箱机制,隔离插件与浏览器运行环境,增强插件与浏览器稳定性和安全性。
6、攻克诸多技术难点,实现插件不修改、不注册也能使用,极大的降低插件开发量和维护量。
下载地址
链接:百度网盘 请输入提取码
提取码:z3q0
如下图所示,下载allWebPlugin-v2.0.32.0.zip安装包。
自动安装服务
allWebplugin中间件的allWebPlugin类中IsInstall方法,可检测当前电脑是否已经部署allWebplugin中间件服务。若已经部署,则退出下载安装包。若没有部署,在需要下载allWebPlugin中间件安装包。

在编写自动下载安装包时,需要注意,避免使用window.open方式下载,这种方式可能会被浏览器拦击;可以使用如下动态创建a元素模拟点击下载,可有效避免浏览器拦截。具体如下:
function downloadFileV1(url,filename){
let a = document.createElement('a');
a.style = 'display: none';
a.download = filename;
a.href = url;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
自动更新服务
allWebplugin中间件allWebPlugin类中IsNewVersion方法,可检测当前电脑版本与需要的版本是否一致,如果小于需要的版本,则返回false,说明需要更新;否则,返回true,不需要更新。当需要更新的时候,可以调用UpdateVersion方法,传入安装包url地址,自动实现安装包升级。
function awp_IsInstall(installPackageVersion,installPackageUrl){
if(g_allWebPlugin != null){
if(g_allWebPlugin.IsInstall() == false){
//未安装,需要手动安装
if(confirm("allWebPlugin中间件未安装或未启动,是否立即安装?")){
downloadFileV1(installPackageUrl,"allWebPlugin.exe");
return false;
}
}else{
if(g_allWebPlugin.IsNewVersion(installPackageVersion) == false){
return true;
}else{
alert("检测到升级包,立即升级。");
g_allWebPlugin.UpdateVersion(installPackageUrl).then(function(data){
if(data.code == 0)
{ //检测是否安装成功
var checkInstall = setInterval(function(){
if(g_allWebPlugin.GetVersion() == installPackageVersion){
window.location.reload();
clearTimeout(checkInstall);
}
}, 1000);
}
else{
downloadFileV1(installPackageUrl,"allWebPlugin.exe");//直接下载包,手动安装
}
}).catch(function(strErr){
downloadFileV1(installPackageUrl,"allWebPlugin.exe");//直接下载包,手动安装
});
return false;
}
}
}
return false;
}