我有个ActiveX放在页面上index.jsp,AcitveX加载后,会调用C:\windows\system32目录中的a.dll和b.dll中的方法。
activex因为是放在页面上,带上版本,这样只要版本升级,客户机器就会自动更新。
但如果a.dll和b.dll有了更新,客户机应该也更新,但我不知道该怎么让这两个dll自动更新。
我之前是将activex,a.dll,b.dll打在一个setup.exe中,然后页面加载的时候,activex判断c:\windows\system32目录中是否有a.dll和b.dll,如果没有则提示用户下载并安装setup.exe。现在有200多台机器,都已经这样安装了。
可是现在a.dll和b.dll功能上都有了升级,我希望用户访问index.jsp的时候,能判断并自动升级a.dll和b.dll。
应该如何实现呢?
我没想到好的方案。大家有简便易行的解决方案没?
activex因为是放在页面上,带上版本,这样只要版本升级,客户机器就会自动更新。
但如果a.dll和b.dll有了更新,客户机应该也更新,但我不知道该怎么让这两个dll自动更新。
我之前是将activex,a.dll,b.dll打在一个setup.exe中,然后页面加载的时候,activex判断c:\windows\system32目录中是否有a.dll和b.dll,如果没有则提示用户下载并安装setup.exe。现在有200多台机器,都已经这样安装了。
可是现在a.dll和b.dll功能上都有了升级,我希望用户访问index.jsp的时候,能判断并自动升级a.dll和b.dll。
应该如何实现呢?
我没想到好的方案。大家有简便易行的解决方案没?
然后这个小ocx的工作完成后,自动再转到包含正常的ocx的页面.
怎么做成cab包?
ocx,dll都做到cab包里吗?
配置文件怎么写?
服务器asp 文件中加script 进行更新 script 脚本我这样写, 因为ocx 在ie 打开时是使用状态,所以要关闭IE窗口<p align="center">
<span id="clswindow"> </span>
<script language="javascript">
<!--
function CloseSelfWindow()
{
setInterval("DecNum();",1000); //第二个: 每隔 1s 执行一次
}
var ele = document.getElementById("clswindow");
var tt = 4; //4秒后关闭
function DecNum()
{
tt--;
ele.innerHTML ='<font color="blue">安装客户端程序需关闭本窗口,<font color="red"><B>' +tt+'</B></font>秒后本窗口自动关闭</font>';
if (tt==0)
{
window.opener=null;
window.open("","_self");
window.close();
}
}
//-->
</script>
<script language="VBScript">
ObjTrayVer=258+98 'Clitray.exe和trayapp.dll版本的和 clitray.exe+trayapp.dll
Objhandver=76+1 '手写板程序版本 handapp.dll
ObjWordVer=15 'word Ocx 版本,wordapp.dll
On Error Resume Next
set objtray = CreateObject("TrayApp.TrayObj")
set objhand = CreateObject("HandApp.HandObj")
set objword = CreateObject("WordApp.WordObj")
if err<>0 then
MsgBox("客户端程序尚未安装,请先安装客户端程序!")
Self.Location="../qwcli.zip"
call CloseSelfWindow()
else
trayver=objtray.GetTrayObjVer
handver=objhand.GetHandObjVer
wordver=objword.GetWordObjVer
if err<>0 then
if MsgBox("客户端程序版本已更新,是否现在更新?",vbYesNo)=vbYes then
Self.Location="../qwcli.exe"
call CloseSelfWindow()
end if
else
if (trayver<ObjTrayVer)or(handver<Objhandver)or(wordver<ObjWordVer) then
if MsgBox("客户端程序有更新版本,是否现在更新?",vbYesNo)=vbYes then
Self.Location="../qwcli.exe"
call CloseSelfWindow()
end if
end if
end if
set objtray = nothing
set objhand = nothing
set objword = nothing
end if
</script>
因为我这里是jsp,不是asp,不能像VB脚本那样直接检测文件版本。
我原来是想通过Activex判断版本,如果发现不一直就直接从服务器端直接下载到客户机。
可惜还不知道该怎么做。
暂时也没时间实现这个功能。
这个框架几乎是国产多层框架中最好的一个,同时体现SmartClient和RIA思想。
Demo(需要客户端初始化): http://117.21.247.37/cbx/AppSvr.dll/Splash.ao