OCX制作CAB,数字签名制作

OCX制作CAB,数字签名制作从网上找了些相关的资料,最终制作成功,做个小的总结:首先准备好必须的工具如下:制作工具:iexpress.exe和makecab.exe,签名工具:cert2spc.exe,makecert.exe,signcode.exe下面我具体说如何使用他们来帮助我们制作需要的cab包。下面是我引用网上的资料信息.1.将ocx文件以及第三方dll文件打包成…

大家好,又见面了,我是你们的朋友全栈君。从网上找了些相关的资料,最终制作成功,做个小的总结:

首先准备好必须的工具如下:

制作工具:iexpress.exe 和makecab.exe,

签名工具:cert2spc.exe,makecert.exe,signcode.exe

下面我具体说如何使用他们来帮助我们制作需要的cab包。

下面是我引用网上的资料信息.

1. 将ocx文件以及第三方dll文件打包成cab文件:

Internet 软件分发单位是“软件包”,它由包含.INF文件或软件分发.OSD文件(或两者都包括)的.CAB文件所组成。

一个分发单位也可以包含软件组件,

如 ActiveX 控件(.OCX)、.DLL文件、.EXE文件、Java类文件或小程序。当Web页上OBJECT元素的CODEBASE特性引用包含.INF文件的.

CAB文件时,Internet Explorer将自动把.CAB文件作为软件分发单位下载并安装,每次访问时还会自动检测版本并进行更新。

INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如.DLL或者其它.OCX)。一个.INF文件就捆绑了.

CAB压缩文件所有的必须文件。 缺省情况下,与现有硬盘中文件版本号相同的文件不被下载。

先自己写了一个inf文件,其中信息包括将.ocx文件,以及相关的.dll文件打包,并下载到文件夹:\WINDOWS\system32,详细标注如下:

[version]

signature=”$CHICAGO$”

AdvancedINF=2.0

[Add.Code]

pcpos.ocx=pcpos.ocx

Comm.dll=comm.dll

[pcpos.ocx]

file-win32-x86=thiscab

RegisterServer=yes

clsid={719A1D6E-7099-4123-9D63-F0118AFF2D61}

DestDir=11

FileVersion=1,0,0,1

[Comm.dll]

file-win32-x86=thiscab

RegisterServer=yes

DestDir=11

FileVersion=1,0,0,1

[RegisterFiles]

%11%\pcpos.ocx

注释:

“thiscab” 是一个关键字,意指包含该INF的CAB文件。也可以从网上下载所需要的DLL文件,只要指定一个HTTP 网址即可,如:

file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL

关键字”file-win32-x86″ 指定平台是 x86。

文件版本号可见属性。

“DestDir”指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/ /SYSTEM32;

“clsid” 指的是要安装控件的CLSID。

制作cab:

使用\WINDOWS\system32\iexpress.exe。

1) 选择“Create new Self Extraction Directive file”,点击下一步。

2) 选择“Create compressed files only(ActiveX Installs)”,点击下一步。

3) 点击Add,文件添加(pcpos.ocx,pcpos.dll,comm.dll,tcpclnt.dll),点击下一步。

4) 点击Browse,输入.CAB文件的存放地址(包含所取文件名),这里取TestCAB.CAB,并且要选中 “Store files using Long File Name inside Package”。点击下一步。

5) 选择“Don’t save”,一直点击下一步,直到完成。

注意:

如果控件已经在客户机注册,并且不是通过.CAB的方式注册,那么通过.CAB自动注册的时候,该控件将无法被更新。必须先手动删除该文件。

2. 对CAB文件进行数字签名

传说中数字签名之后就可以不出现提示而自动下载,所以也试试:

在\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin 中间有三个小工具,就用他们来实现数字签名。

1.Makecert.exe —证书创建工具

2.Cert2Spc.exe —发行者证书测试工具

3.Signcode.exe —文件签名工具

步骤:

1) makecert -ss name -n “CN=公司名” -sv d:\pos.pvk -r d:\pos.cer 其中sk-表示主题的密钥容器位置,

ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置,-sv 导出私钥文件(为了签名使用)。

注意:这个时候会让输入三次密码,三次要完全一致。

2) 使用Cert2Spc生成spc发行者证书(可选):cert2spc d:\pos.cer c:\pos.spc

3) 双击signcode,不带参数会启动签名向导。先选择要签名文件,下一步,选择“自定义”,

下一步,选择“从文件选择”,添加刚生成的pos.cer证书,下一步,选择刚生成的私钥pos.pvk,再下一步,

可spc证书,再一直下一步。添加时间戳,在时间戳填入http: //timestamp.verisign.com/scripts/timstamp.dll TestCAB.CAB,

再下一步完成。

这样就对CAB文件进行了签名,但是这个时候点击这个文件会发现证书不可用,原因是证书没有安转。

文件属性->数字证书->详细信息-〉查看证书-〉安装证书,进入安装证书向导,存放区域选择“受信任的根证书颁发机构”,点击完成即可。

思想就是如上所示,具体的不懂的可以从网上查相关资料。希望对大家有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159169.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows下更新pip源「建议收藏」

    windows下更新pip源更新pip源原因由于之前通过pip的一个命令将我所装的所有可更新的Python包均更新了一遍,导致好像将pip本身也更新了(也可能不是通过pip命令是conda命令将pip给更新了),结果就是之后我使用pip时,无论下载安装什么均是timeout!!!而且还提示我pip该更新了,当我使用python-mpipinstall–upgradepip…

    2022年4月16日
    193
  • 现场总线及其应用「建议收藏」

    现场总线及其应用「建议收藏」现场总线是应用在生产现场、在微机化测量控制设备之间实现双向串行多节点数字通信的系统,也被称为开放式、数字化、多点通信的底层控制网络。现场总线技术形成了真正分散在现场的完整控制系统,提高了控制系统运行的可靠性,丰富了控制设备的信息内容。为控制信息进入公用数据网络创造了条件,沟通了现场控制设备之间及其与更高控制管理层网络之间的联系,便于实现管控一体化,同时控制网络与数据网络的结合,便于实现信号的远程传…

    2022年5月10日
    48
  • java激活码-激活码分享

    (java激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~B…

    2022年3月22日
    282
  • python画图函数

    python画图函数python画图函数

    2022年6月3日
    35
  • 抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂

    抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂Abstract Factory动机实例模式定义结构要点总结笔记动机在软件系统中,经常面临着”一系列相互依赖的对象“的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作如果应对这种变换?如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”多系列具体对象创建工作“的紧耦合?实例数据库连接的时候会有很多关联的对象,这些对象是一个整体朴素class EmployeeDAO{public: vector<EmployeeDAO> GetEm

    2022年8月9日
    0
  • 反掩码有什么作用?通配符掩码有什么作用?

    反掩码有什么作用?通配符掩码有什么作用?反掩码是指路由器使用的通配符掩码与源或目标地址相匹配,与子网掩码正好相反。就像子网掩码告诉路由器IP地址中哪个属于网络号一样,通配符掩码告诉路由器,为了判断匹配,需要检查IP地址中有多少位。这种地址掩码可以使用两个32位的数字来确定IP地址的范围。这个非常方便,因为如果没有掩码,你必须在每个匹配的IP客户地址上添加一个单独的访问列表语句。它会导致许多额外的输入和路由器的额外处理过程。因此地址掩码非常有用。在子网掩码中,将一个掩码设置为1,表示IP地址对应的位置属于网络地址部分。相反,在访..

    2022年7月19日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号