记得曾经转载了一篇关于C#开发ActiveX控件的文章:使用C#开发ActiveX控件(zt) ,最近在项目中的使用过程中,发现不能自动下载Activex控件,这需要手动的为使用Activex的客户端注册,显然这是不适应的。
按道理说应该这样:先检查客户端浏览器是否安装了ActiveX控件,如果没有安装ActiveX,就需要先给浏览器提示下载并允许安装。否则就直接使用该ActiveX控件。我们可以使用CodeBase来满足我们的要求:下面是一个html的调用:
注意里面的codeBase属性,指定了该安装文件的路径:Charles2008ActiveX/Setup.exe,版本是1.0.0.0。这是相对路径,实际上的决定路径是在当前URL地址所在的目录下的Charles2008ActiveX文件夹里的Setup.exe文件,该文件就是该ActiveX的安装文件。
这样我们就可以使用codebase属性来满足我们对ActiveX控件的要求。
这样我们需要来说明另一个问题:怎样来对ActiveX控件打包生成.exe文件或者.cab文件?
实际上就是对开发的ActiveX控件创建一个安装程序即可。假设是C#开发的ActiveX控件的话。打包的过程实际上是和普通的winform程序打包过程是一样的。注意需要设置一下:安装的URL地址:(如下图)
这里设置为http://192.168.1.101/ActiveX,这个目录必须存在的,用来存放生成的安装文件,供客户端下载安装。
配置完成后,生成项目就会生成两个文件,一个.exe和一个.msi文件。将生成好的exe和msi文件拷贝到网站ActiveX目录中去。
启动网站,确保访问setup.exe的目录与[安装项目]中的[安装URL]一致。一般情况下:网页会弹出提示,是否安装ActiveX控件等,如果提示了也不能安装,需要将网站添加到信任站点,并允许下载不安全和未签名的控件。使用这种方式安装,会在客户端弹出安装软件的界面。同winform安装类似。
我们也可以把程序打包生成Cab文件,即把上面生成的.MSI文件打包生成Cab文件,有很多铺助工具如:CabARC.exe.用法可以参考其他网络资源。据说使用起来很方便也很简单。这里就不详细介绍了!
总之我们我们可以把ActiveX打包生成我们想要的安装程序,通过codebase来指定下载activex控件的URL即可满足要求:
客户端已经安装了ActiveX控件则不用再安装,没有安装ActiveX控件则从codebase路径下下载并安装,这样也满足了客户端对控件的要求。
Best Regards,
Charles Chen