关于C#制作的ActiveX在远端的注册安装
aizb 2010-11-18 04:29:37 我写了一个ActiveX,是用C#写的,基于.Net framework 2.0的,为了在网页里面应用,我把它和它所需要的文件(包括DLL)打包到一个CAB文件中,在网页使用。CAB文件名为CMS.NET.Workstation.WebActiveX.CAB.CAB
根据网上的资料,为了安装这个ActiveX,在CAB文件中需要:
1:一个inf文件;
2:ActiveX的DLL和其所需要的所有其他文件;
为此我写了以下的inf文件。
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[DefaultInstall]
CopyFiles=install.files;需要复制的文件列表所在的域
[DestinationDirs]
install.files=0,%11%\FSIActiveX;目标文件夹,0表示使用绝对路径,%11%是宏,表示“Windows\System32”,是Windows\System32\FSIActiveX
;安装的文件列表
[install.files]
CMS.NET.Workstation.WebActiveX.dll=CMS.NET.Workstation.WebActiveX.dll
Setup.exe=Setup.exe;这是一个随便写的EXE文件。
;主DLL,就是ActiveX所在的DLL.
[CMS.NET.Workstation.WebActiveX.dll]
file-win32-x86=thiscab
RegisterServer=yes;自动注册
clsid={723047A4-BD8E-4a4d-A126-690A4A12692C}
FileVersion=1,0,0,1
[Setup.exe]
file-win32-x86=thiscab
RegisterServer=no
FileVersion=1,0,0,1
hook=ActiveXInstaller;执行程序
[ActiveXInstaller]
file-win32-x86=thiscab
run=%EXTRACT_DIR%\Setup.exe "%OBJECT_DIR%\CMS.NET.Workstation.WebActiveX.dll";该程序仅用作测试,其作用是打开控制台界面,显示传入的参数字符串,然后等待回车并关闭控制台界面。
CAB文件制作好之后,进行签名(使用测试证书),使之可以被客户端IE接受,然后放到局域网内的web服务器上。
在html文件中写入:
<object id="webOcxClient" name="webOcxClient" classid="clsid:723047A4-BD8E-4a4d-A126-690A4A12692C"
codebase="CMS.NET.Workstation.WebActiveX.CAB.CAB"
style="width: 500px; height: 200px; top: 0px; right: 0px; bottom: 0px; left: 0px">
最终结果:
在客户端第一次因为使用测试证书,不被IE接受,所以需要先安装证书,然后就可以打开,下载,并弹出提示框安装,但是,之后就没有反应了,页面在ActiveX的地方显示了一个红叉。
经过查看发现文件已经被正确的下载解压并复到到Windows\System32\FSIActiveX文件夹中。
经过查看注册表,发现本应注册的ActiveX文件没有正确的注册。
Setup.exe本应打开的控制台界面也没有打开。
特别说明:客户端已经安装了.net Framework。
请教:
如何才能让ActiveX注册成功?如何才能正确执行Setup.exe?