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