Activex打包于发布完整版---ActiveX打包
前面介绍了数字证书的原理与制作: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打包的更多相关文章
- Activex打包于发布完整版---微软证书制作
众所周知,Activex组件没有进行有效的签名,在IE上无法安装的,除非你让用户手工开启“接收任何未签名的ActiveX”,这个很明显不现实.而组件签名需要证书,证书从哪里来,你可以选择付1000到3 ...
- 在Eclipse中用Maven打包jar包--完整版
将本地的jar导入到maven本地库中 <!--手动加入库中 --><!-- mvn install:install-file -DgroupId=org.apache.Hadoop ...
- Unity3D打包 将发布的exe文件打包成一个Windows安装文件(自解压文件)
Unity打包Standalone时 会出现一个exe文件和一个data文件夹 可是我们平常见过的软件 基本没有这种像这种结构的 一般都是一个安装文件,然后点击安装,选择路径,生成快捷方式- 本篇博客 ...
- visual studio 2012 的制作ActiveX、打包和发布
开发环境是Vs 2012 Framework 4.0 源码和制作工具在文章最下边 一. ActiveX控件Demo 新建一个Window窗体控件库项目 在自动生成的UserControl1页面上添加 ...
- visual studio 2012 的制作ActiveX、打包和发布[转]
开发环境是Vs 2012 Framework 4.0 源地址:http://www.cnblogs.com/li-peng/p/3455247.html 源码和制作工具在文章最下边 一. Activ ...
- .Net魔法堂:史上最全的ActiveX开发教程——发布篇
一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程——开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包 C#开发的Activ ...
- ios外包公司—北京动点软件分享:IOS工程自动打包并发布脚本实现
前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本, ...
- IOS工程自动打包并发布脚本实现
http://blog.csdn.net/ccf0703/article/details/8588667 文章首发地址:http://webfrogs.me/2013/02/18/ios-automa ...
- 手把手教你使用Rollup打包📦并发布自己的工具库🔧
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...
随机推荐
- C#高级编程9-第6章 数组
数组 1.同一类型和不同类型的多个对象 需要使用同一类型的多个对象则使用集合和数组. Array类为数组元素排序和过滤提供了多个方法,使用枚举器,可以迭代数组所有元素. 2.简单数组 数组的声明 因为 ...
- Python知识(1)----基础入门和进阶总结。
今天把Python的语法过了一遍,学习了慕课网上的教程,简单易懂,1个小时就可以入门Python了.Python有两个主要的版本,Python2.7,Python3.5,后面的版本,改动较大,编写的程 ...
- Git_创建标签
在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * dev master $ git checkout master Switched to branch 'ma ...
- .Net 中DataSet和DataTable的 区别与联系
1.简要说明二者关系 在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 datatable 中.其实使用 dataset 相当于所使用数据库中数据的副本,保存在 ...
- c#开发地磅称重软件
2012年时即做过一个地磅称重软件,最近公司又接了一个地磅过磅软件的项目,把遇到的问题总结一下以备后用. 1.接线问题 因为客户方原来单独使用仪表,仪表未有接线和电脑连接,为此颇费周折才做好了接线.接 ...
- MySql 数据库导入"Unknown command '\n'."错误解决办法
原文地址:http://www.cnblogs.com/bingxueme/archive/2012/05/15/2501999.html 在CMD 下 输入: Mysql -u root -p -- ...
- mysql批量insert速度超慢
在进行大批量数据insert的时候,我使用的是hibernate的进行save,而数据库采用mysql.但是在save的时候,速度很慢. 刚开始以为是MYSQL进行DNS解析的问题,于 ...
- easyui datatimebox 取值和赋值
1.取值 var time = $('.easyui-datetimebox').datetimebox('getValue'); 全部代码如下: <script type="text ...
- RTC设备驱动
问题:pcf8563 RTC设备驱动不能被正常的加载!问题分析过程. 问题在下午得到解决,虽然解决的办法比较笨,采用的是不断的使用printk来跟踪rtc-8563驱动的加载的过程,以及iic模块的工 ...
- [Usaco2006 Nov]Roadblocks第二短路
贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路. 贝茜所在的 ...