`
jgsj
  • 浏览: 1003773 次
文章分类
社区版块
存档分类
最新评论

如何发布ActiveX 控件

 
阅读更多

转自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx

[背景]

做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该ActiveX控件(test.ocx)放在本机的%system%/system32下,然后运行DOS工具里面运行regsvr32 test.ocx命令进行注册。但如果真是这么去做的话,那么代表着你处于危险之中了,因为您是通过让用户自己去部署设置环境来达到你的目的,这就失去软件项目本身所存在的价值。那么面对这种情况,我们应该如何解决呢?聪明的你一定会很快就想到,我们可以使用户在客户端自动下载安装该ActiveX控件,这样一来即可以实现我们所想要的功能,又不需要用户自己去部署设置环境,这岂不是一举两得。


[必备条件]

一、用于将ActiveX控件进行打包并加数据鉴名的工具集:

makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥和公钥。

cert2spc.exe 将cer格式证书转换成spc格式证书,即PKCS #7证书。

cabarc.exe 将ocx打包成cab。

signcode.exe 将证书签署到ocx上去。

chktrust.exe 检查签署证书后的ocx是否正确。

certmgr.exe 是管理证书用的。

二、用于进行打包用的ocx控件evS1300.ocx。

三、用于查看ocx控件的工具ActvxDoc。

[制作过程]

一、环境设置


1、下载makeCAB包,解压到本地目录(如E盘根目录),如查看到如图1所示的工具集,则表示已下载成功:

(图1:makeCAB包的工具集)

2、设置系统环境变量,右键单击“我的电脑”à选择“属性”à选择“高级”选项卡,打开如图2所示的系统属性面版块:

(图2:系统属性版块)


3、在系统属性版块里单击“环境变量(N)”按钮,打开图3:

(图3:系统变量)


4、选择“系统变量(S)”里的“新建(W)”按钮,打开“编辑系统变量”对话框,如图4所示,然后在“变量值(V)”里加入“;E/makeCAB”:

(图4:编辑系统变量)


二、将用于打包的OCX控件放在E盘根目录下(本文档使用名为evS1300.ocx的控件来进行介绍),如图5所示,其中evS1300.ocx是本文档进行操作的控件对象,而mfc71.dll、msvcp71.dll、msvcr71.dll这三个文件通常是进行打包时一并打包的文件,但不是必须(推荐一起打包),其可在系统中的system32目录下找

到,请自行准备。

(图5;用于操作的OCX控件路径)

三、ActiveX发布步骤

1、单击“开始”à“动行(R)”à输入“cmd”à回车à进入到操作的控件所在的目录,如图6所示:

(图6:进入E:/evS1300目录)

2、创建PVK文件(私人密匙文件),在命令行中输入“makecert -sk evS1300 evS1300.pvk -n CN=XXXXXXX公司”,然后回车,如图7所示:

(图7:创建PVK文件)

3、创建CER文件(公司证书),在命令行中输入“makecert -sk evS1300.pvk evS1300.cer”,然后回车,如图8所示,若出现“Successed”提示,则会在E:/evS1300目录下生成evS1300.cer文件,如图9所示:

(图8:创建CER文件)

(图9:生成evS1300.cer)

4、创建SPC测试软件出版商证明书,在命令行中输入“cert2spc evS1300.cer evS1300.spc”,然后回车,如图10所示:

(图10:创建SPC测试软件出版商证明书)

5、创建INF文件,用记录本编辑以下信息


[version]
signature="$CHINA$"
AdvancedINF=1.0

[Add.Code]
evS1300.ocx=evS1300.ocx
msvcr71.dll=msvcr71.dll
mfc71.dll=mfc71.dll
msvcp71.dll=msvcp71.dll

[evS1300.ocx]
file=thiscab
clsid={0440906E-9BD6-4F3E-B65A-39E1B339D9DA}
FileVersion=1,0,0,0
RegisterServer=yes

[msvcr71.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=7,10,3052,4

[mfc71.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=7,10,3077,0

[msvcp71.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=7,10,3077,0

如图11所示,并保存为E:/evS1300/evS1300.inf,如图12所示

(图11:evS1300.inf)

(图12:保存evS1300.inf)

在evS1300.inf的内容里,[version]和[Add.Code]项是必须的,[Add.Code]的键值项的多少取决于以下你所配制项的多少。[msvcr71.dll]、[mfc71.dll]、[msvcp71.dll]就是上面我所说不是必须的项,只要你想把msvcr71.dll、mfc71.dll、msvcp71.dll包括在发布包里,那这么三项就必须写在inf里,而这三项的具体内容是固定的,可复制过去即可。最为关键的就是[evS1300.ocx]项,其中有clsid和FileVersion就是evS1300.ocx的classId和version,这要求必须一至,否我们发布出去的CAB包时不能在客户端自动更新下载安装。说到这里,那我们如何才能知道evS1300.ocx里面的classId和version呢?我在上面的必备条件里介绍到有一个用于查看ocx控件的工具ActvxDoc,对,就是用它,我们双击这个文件运行它,此时可以看到图13所示的界面:

(图13:ActiveX Documenter)

在图13的界面里,点击“File”à“Open…”,打开您所要查看的OCX控件,如图14所示:

(图14:打开控件)

打开了控件之后,我们在界面的右边部位“Class”的下拉框里选择“<all interfaces=""></all>”就可以看到我们想要查找的FileVersion和classId,如图15所示:


(图15:控件属性)

6、创建CAB文件,在命令行中输入“cabarc -s 6144 n evS1300.cab msvcr71.dll mfc71.dll msvcp71.dll evS1300.ocx evS1300.inf”,然后回车,如图16所示:

(图16:创建CAB文件)

7、使用Code Signing Wizard签署一个CAB文件,首先双击运行工具集里面的signcode.exe(或在命令行里直接输入“signcode”后回车),系统会弹出如图17所示的数字签名向导:

(图17:数字签名向导)

8、单击“下一步(N)”按钮,来到图18所示,选择要进行数字签名的且已做成CAB包的文件evS1300.cab文件。

(图18:选择CAB包)


•makeCAB.rar (188.5 KB)

9、选择好CAB包后单击“下一步(N)”按钮,在选择想要的签名类型里选择“自定议(C)”并单击“下一步(N)”按钮,如图19所示:

(图19:选择签名类型)

10、接下来单击“从文件选择(F)”按钮,选择刚刚制作的evS1300.cer,如图20所示:

(图20:选择CER证书)

11、在图20中单击“下一步(N)”按钮来到图21,然后在图21里选择“CSP中的私钥(K)”。

(图21:选择私钥的位置)

12、在图21中单击“下一步(N)”按钮,然后在图22中的散列算法中选择“shal”,并单击“下一步(N)”按钮。

(图22:选择散列算法)

13、在“证书路径中的证书”中选择“证书路径中的所有证书,包括根证书(C)”,在“其它证书(可选)”中选择“包括在以下PKCS #7 证书(.p7b)文件中的证书(P):”,并单击“浏览(R)…”按钮选择evS1300.spc文件,选择完后单击“下一步(N)”按钮,如图23所示:

(图23:选择其它证书)

14、接下来在弹出的“数据描述”窗口中输入公司的名称和网址并单击“下一步(N)”按钮,如图24所示:

(图24:输入数据描述)

15、现大部份工作都已完成,在接下来的一步当中是可选的操作,其作用只是为CAB加入时间戳,此步骤完全可以不做,如图25所示:

(这里我提拱三个免费的代码签名时间戳地址)

VeriSign: http://timestamp.verisign.com/scripts/timstamp.dll

Comodo: http://timestamp.comodoca.com/authenticode

GeoTrust/TrustCenter: http://www.trustcenter.de/codesigning/timestamp

(图25:给数据盖时间戳)

16、完成,在图25中单击“下一步(N)”按钮便可来到数字签名向导的最后一步,即操作总览,如图26所示,单击“完成”按钮便可大功告成,如图27所示:

(图26,完成操作总览)

(图27:签名成功提示)

分享到:
评论

相关推荐

    发布ActiveX控件到web方法及相关工具

    有一个doc文档一步步说明怎么样将ActiveX控件发布到web使用,还有所有用到的工具软件,这个文档写的很详细,刚开始我也是下载的别人的,但是文档中有一个小地方我加以修正了,并且添加了修改后需要使用的工具。...

    C#开发ActiveX控件及控件的发布

    本文将详细介绍如何在Visual Studio 2005环境下使用C#来开发和发布ActiveX控件。 **一、理解ActiveX控件** ActiveX控件是基于COM(Component Object Model)技术的,它们是自包含的、可执行的二进制文件,可以在...

    发布MFC ActiveX控件并实现自动更新

    在发布ActiveX控件前,首先需要确保控件已正确编译。通常推荐使用Visual Studio进行编译,并选择“Release”模式以获得更优的性能。编译过程中需要注意以下几点: 1. **MFC类库的使用**:为了使ActiveX控件能够在...

    ActiveX控件打包发布

    ### ActiveX控件打包发布知识点详解 #### 一、ActiveX控件概述 **ActiveX** 是一种由微软开发的技术,允许在不同的编程语言中创建交互式的对象。这些对象可以在不同的应用程序之间共享,并且能够在浏览器中运行。...

    ActiveX控件发布过程.pdf

    发布ActiveX控件的主要方式之一是通过CAB包。CAB包采用了压缩技术,能够有效地减少文件大小,便于传输。此外,CAB包还支持新旧版本之间的平滑过渡,可以包含多个文件,并且可以通过数字签名增强安全性。 #### 二、...

    MFC教程lesson 18-ActiveX控件原理&应用.rar

    本教程的视频和PPT部分可能会详细解释这些概念,并通过实例演示如何创建、调试和发布ActiveX控件。笔记部分则可能包含了学习过程中重要的要点和技巧,帮助你更好地理解和掌握ActiveX控件在MFC中的应用。 通过学习这...

    ActiveX控件注册的几种方法

    这在发布应用程序时尤为常见,因为这样可以确保用户安装应用程序时ActiveX控件也会被正确注册。 ##### 操作步骤: 1. **创建项目**:在InstallShield中创建一个新的项目。 2. **添加文件组**:在项目中添加一个...

    VC++ Activex控件开发

    VC++ ActiveX控件开发是Windows应用程序开发中的一个重要部分,主要涉及的是利用Microsoft Visual C++这一集成开发环境(IDE)创建能够嵌入到其他应用程序、网页或者Active Desktop中的控件。ActiveX技术允许开发者...

    基于MFC的ActiveX控件开发(VS2005)

    - **发布**:发布ActiveX控件之前,需要确保控件已经正确注册。可以通过调用`DllRegisterServer`函数来注册控件。发布时还需要考虑控件的安全性和兼容性问题。 通过以上步骤,开发人员可以基于MFC和VS2005构建功能...

    VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

    发布ActiveX控件通常涉及证书的制作和签名。VS2005提供了几个工具,如`makecert.exe`用于创建证书,`cert2spc.exe`将证书转换为SPC文件,以及`signcode.exe`用于对文件进行签名。制作证书的过程包括使用makecert创建...

    ACTIVEX控件

    **ACTIVEX控件详解** ACTIVEX控件,又称为OLE控件,是微软在Windows平台上推出的一种组件技术,它是ActiveX技术的重要组成部分。ActiveX控件是一种可执行的软件模块,能够嵌入到其他应用程序中,提供特定的功能,如...

    Delphi中ActiveX控件的开发

    在Delphi中,ActiveX控件的开发是实现跨平台交互和组件重用的一种重要方式。ActiveX是微软提出的技术,它允许开发人员创建可以在不同应用程序之间共享的组件,这些组件可以通过COM(Component Object Model)接口...

    打包activex控件方法

    标题中的“打包activex控件方法”指的是将ActiveX控件打包成CAB( Cabinets)文件,以便在网页上发布和安装。ActiveX是一种由微软开发的技术,允许在Internet Explorer浏览器中运行小型应用程序或控件,提供增强的...

    用.NET编写自己的ActiveX 控件

    ### 使用.NET编写自己的ActiveX控件 #### 一、引言 随着.NET框架的广泛应用,开发者不仅能够构建功能丰富的桌面应用程序,还能通过.NET创建可跨平台使用的ActiveX控件。ActiveX控件是一种用于增强网页功能的小型...

    使用VS2008 C#_开发ActiveX控件

    ##### 5.1 发布ActiveX控件 1. 构建项目,生成Debug或Release版本的DLL文件。 2. 使用`setup project`或第三方工具创建安装包。 ##### 5.2 安装包的升级 1. 在安装包中加入版本控制机制。 2. 提供在线检测更新的...

    VC程序内部注册ActiveX 控件

    在VC++编程环境中,ActiveX控件是一种常用的组件模型,它允许开发者创建可重用的软件组件,并在多个应用程序中嵌入使用。本教程将详细讲解如何在VC++程序内部注册ActiveX控件,以便在运行时动态地加载和使用这些控件...

    VC6开发ActiveX控件 整套学习资料

    VC6(Visual C++ 6.0)是Microsoft在1998年发布的一款经典集成开发环境,它在Windows应用程序开发领域有着广泛的应用,尤其是在开发COM(Component Object Model)组件,如ActiveX控件方面。ActiveX控件是一种基于...

    ActiveX发布

    7. **许可证与版权**:发布ActiveX控件还需要考虑软件的许可证和版权问题,确保合法合规的分发。 总的来说,ActiveX发布是一个涉及编程、安全、部署和用户体验等多个方面的工作。对于开发者来说,理解并熟练掌握...

Global site tag (gtag.js) - Google Analytics