前面介绍了数字证书的原理与制作:http://blog.csdn.net/jiangtongcn/article/details/13508365,下面来看一下ActiveX组件的打包。

我现在有一个ActiveX组件:fq.ocx,目的用于采集当前登录的QQ号码,采用vc mfc编写,当然您完全可以用其它技术编写。本ActiveX需要嵌入在网页中运行。

网上的关于打包这方面的东西太多了。这里我整理一下

一、编写用于安装cab包的inf文件

格式如下:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0 [Add.Code]
XXXA.dll=XXXA.dll
atl90.dll=atl90.dll [atl90.dll]
file-win32-x86=thiscab
//告诉ie到哪里去得到这个dll,file一共包括三个部分,第一部分是file,这个永远都是这样的(至少目前来说);第二部分告诉声明支持的OS,win32表示windows,mac就是苹果MAC OX了;第三部分是CPU类型,比如说x86、 ppc (Power PC)、 mips或者alpha了
//其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL,
例如: file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL
FileVersion=9,00,30729,01
//说明了atl90.dll的版本号
DestDir=11
//它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到/Windows或者/WinNT下;如果是11,则放到/Windows/System或者/WinNT/System32下;如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。
RegisterServer=yes [Polygon.dll]
file-win32-x86=thiscab
clsid={2885EE05-A26B-11D1-B49B-00C04F98EFE0}
//“clsid”是将要安装的控件的 CLSID
FileVersion=1,0,0,1
RegisterServer=yes

我的配置如下:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
fq.ocx=fq.ocx

[fq.ocx]
file-win32-x86=thiscab
clsid={7734961F-2127-4645-A17A-618D912AA868}
FileVersion=1,0,0,1
RegisterServer=yes
DestDir=11

二、创建CAB文件

cabarc -s 6144 n fq.cab fq.inf fq.ocx

说明:

-s 6144:Reserve space in cabinet for signing (e.g. -s 6144 reserves 6K bytes) 在压缩文件中保留用于代码签名的空间

n:         Create new cabinet (e.g. cabarc n test.cab *.c app.mak *.h) 指定希望创建 CAB 文件

三、签名CAB文件

1、双击signcode.exe文件:

2、点击下一步选择被签名的CAB文件:

3、点击下一步,选择想要的签名类型为”自定义“:


4、点击下一步,选择”签名证书“,选择”从文件中选择“

5、点击下一步,选择私钥,选择”磁盘上的私钥文件“:

6、下一步输入私钥密码:

7、下一步选择散列算法,我选择sha1:

8、下一步使用默认选择即可,直接下一步:

9、接下来在弹出的"数据描述"窗口中输入公司的名称和网址并单击"下一步(N)"按钮(可以不输入)

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

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

11、到此,CAB文件的数字签名工作已经完成

四、在html页面中嵌入ActiveX:

<OBJECT ID="Fq1" WIDTH=800 HEIGHT=600
CLASSID="CLSID:7734961F-2127-4645-A17A-618D912AA868" CODEBASE="fq.cab" style="border:1px none white;">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
<PARAM NAME="Interval" VALUE="3000">
</OBJECT>

CODEBASE 也可以直接指向 OCX 或 DLL 文件,如:  
CODEBASE="http://lhsoft.net/mydir/fq.ocx#version=1,0,0,1"

以上步骤,如果您不会你可以手工注册ActiveX组件,然后采用”Microsoft ActiveX Control Pad“工具完成:

命令行注册ActiveX组件:regsvr32 fq.ocx

命令行取消注册ActiveX组件:regsvr32 /u fq.ocx

”Microsoft ActiveX Control Pad“可以帮您生成自动生成页面:

选择”Edit->Insert ActiveX Control...“:

选择您注册的控件名称:

随后弹出的界面帮助您完成ActiveX组件属性的设置:

关闭这些窗口,页面脚本出来了:

后面的我不说了,该修改的改改吧。

五、使您的产品的使用者(客户)下载和安装您制作的证书

您需要编写一个exe文件或者像我这样准备三个文件:

install_cer.bat是批处理文件调用certmgr.exe完成证书的安装,fq.cer就是要安装的证书,install_cer.bat内容如下:

certmgr /c /add fq.cer /s root

至此,全部完成。

Activex打包于发布完整版---ActiveX打包的更多相关文章

  1. Activex打包于发布完整版---微软证书制作

    众所周知,Activex组件没有进行有效的签名,在IE上无法安装的,除非你让用户手工开启“接收任何未签名的ActiveX”,这个很明显不现实.而组件签名需要证书,证书从哪里来,你可以选择付1000到3 ...

  2. 在Eclipse中用Maven打包jar包--完整版

    将本地的jar导入到maven本地库中 <!--手动加入库中 --><!-- mvn install:install-file -DgroupId=org.apache.Hadoop ...

  3. Unity3D打包 将发布的exe文件打包成一个Windows安装文件(自解压文件)

    Unity打包Standalone时 会出现一个exe文件和一个data文件夹 可是我们平常见过的软件 基本没有这种像这种结构的 一般都是一个安装文件,然后点击安装,选择路径,生成快捷方式- 本篇博客 ...

  4. visual studio 2012 的制作ActiveX、打包和发布

    开发环境是Vs 2012  Framework 4.0 源码和制作工具在文章最下边 一. ActiveX控件Demo 新建一个Window窗体控件库项目 在自动生成的UserControl1页面上添加 ...

  5. visual studio 2012 的制作ActiveX、打包和发布[转]

    开发环境是Vs 2012  Framework 4.0 源地址:http://www.cnblogs.com/li-peng/p/3455247.html 源码和制作工具在文章最下边 一. Activ ...

  6. .Net魔法堂:史上最全的ActiveX开发教程——发布篇

    一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程——开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包  C#开发的Activ ...

  7. ios外包公司—北京动点软件分享:IOS工程自动打包并发布脚本实现

    前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本, ...

  8. IOS工程自动打包并发布脚本实现

    http://blog.csdn.net/ccf0703/article/details/8588667 文章首发地址:http://webfrogs.me/2013/02/18/ios-automa ...

  9. 手把手教你使用Rollup打包📦并发布自己的工具库🔧

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

随机推荐

  1. 2、Redis的基础知识

     写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- 主要内容包括: red ...

  2. 【bzoj2005】 [Noi2010]能量采集 数学结论(gcd)

    [bzoj2005] [Noi2010]能量采集 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnli ...

  3. newtonsoft动态修改JObject

    直接上代码: var data = new { mobile = ", company = ", isTravel = ", invoiceId = ", se ...

  4. CentOS 7 与老版本CentOS防火墙配置的区别

    一.CentOS 7 以下版本防火墙的配置: 1.开放80,22,8080 端口/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT/sbin/ipt ...

  5. PostgreSQL控制台以竖行显示

    \x select * from user; 这个和MySQL的有点区别,在查询之前使用\x进行显示的开启 注意:只需要用一次即可,以后的查询都是以竖行进行显示.

  6. 事件冒泡与捕获&amp;事件托付

    设想这样一种情况 一个div里面有个span元素  ,当鼠标单击span时,这个事件算是谁的? div还是span? 准确的说两个都触发了,这种认可大家都允许,事实就是这种, 第二个问题来了,这个事件 ...

  7. How to match between physical usb device and its drive letter?

    struct tagDrives { WCHAR letter; WCHAR volume[ BUFFER_SIZE ]; } g_drives[ ]; // WCHAR GetUSBDrive( ) ...

  8. 使用Facade模式更新库存、确认订单、采取打折、确认支付、完成支付、物流配送

    Facade模式对外提供了统一的接口,而隐藏了内部细节.在网上购物的场景中,当点击提交订单按钮,与此订单相关的库存.订单确认.折扣.确认支付.完成支付.物流配送等都要做相应的动作.本篇尝试使用Faca ...

  9. 想要快速上手 Spring Boot?看这些教程就足够了!| 码云周刊第 81 期

    原文:https://blog.gitee.com/2018/08/19/weekly-81/ 想要快速上手 Spring Boot?看这些教程就足够了!| 码云周刊第 81 期 码云周刊 | 201 ...

  10. intrawebIW当作REST 服务端

    intraweb15 该版本支持HTTPS.SYS通信. IW当作REST 服务端使用: procedure TIWServerController.IWServerControllerBaseExe ...