我们知道当使用C++, COM和ATL来开发ActiveX的时候得CAB文件里面的INF文件描述了如何注册以及复制到何处的指令。
但是当我们用C#来开发ActiveX的时候,INF文件里面Registerserver=Yes 不起作用。因为这个命令只是调用regsvr32 来注册相应的组件,他对C#开发的ActiveX不起作用。
1、为了发布C#开发的ActiveX我们首先在2005里面建立一个.NET的MSI文件,如下图所示:
在Setup的Added output file的属性窗口里面,确认将Register property 设置成vsdrpCOM, 这个设置确保了在安装的时候会
调用regasm 来注册ActiveX控件。
2、CAB文件的建立
1[version]
2signature="$CHICAGO$"
3AdvancedINF=2.0
4[Setup Hooks]
5hook1=hook1
6
7[hook1]
8run=msiexec.exe /i "%EXTRACT_DIR%\ActiveXDotDownload.msi" /qn
2signature="$CHICAGO$"
3AdvancedINF=2.0
4[Setup Hooks]
5hook1=hook1
6
7[hook1]
8run=msiexec.exe /i "%EXTRACT_DIR%\ActiveXDotDownload.msi" /qn
注意,浏览器出于安全性考虑,会拦截未经数字认证的控件。修改浏览器设置,在Internet选项-〉安全-〉受信任的站点-〉站点 中添加服务器地址,不要选复选框“对该区域中的所有站点要求服务器验证”。解决浏览器拦截问题,而不用更改浏览器的安全级别。
结束语
本文探讨了使用C# 2.0 在。NET2005平台上面开发ActiveX的可行性,虽然和以往的一些技术手段来比,可能有些不足,但也不失
可以作为一种特殊情况下的手段。