为了自由,幸福而不断奋斗,前行!!!

一笑看风云过....

博客园 首页 新随笔 联系 订阅 管理
作者:mouse    信息技术来源:本站原创    点击数:    更新时间:2006-1-4
制作CAB自解压文件的工具——IExpress
   ——IExpress大家知道CAB这种压缩格式比ZIP的压缩率要高,与RAR相当,而且是一种标准的压缩格式,能够被WINZIP等众多压缩软件打开,但制作CAB自解压文件的工具却不多。其实好的工具就在我们的身边,在IE中文版中有一个隐藏的自解压CAB制作工具——IExpress,它就能够把你的文件压缩成一个自解压的CAB压缩包,而且生成的自解压程序界面是全中文的。打开c  \windows\system文件夹,找到iexpress.exe,它就是IExpress,为它创建一个快捷方式,以后运行快捷方式就可以了。
   虽然IExpress制作出的自解压文件是中文界面,但IExpress还是英文界面,下面以制作一个最简单的自解压CAB文件为例,介绍一下IExpress的用法。
 一、运行iexpress.exe,出现IExpressWizard(向导),然后依次按“下一步”进入各步骤;
1、选择默认选项“CreatenewSelfExtractionDirectivefile”(建立新的自解压文件);




2、选择“Extractfileonly”(仅解压文件)单选钮;


3、输入自解压程序标题栏文字,比如“中国节日”;


4、选择默认选项“Noprompt”(解压前不提示);

5、选择默认选项“Donotdisplayalicense”(不显示许可协议),单击“Add”按钮,在弹出的“打开”对话框中选取需压缩的文件;


6、选择默认选项“Defaultrecommended ”(按默认方式显示程序窗口)

7、选择默认选项 “No message”
8、选择“Browse”为你的自解压程序选择一个保存的位置和名称


9、选择默认选项Save Self Extraction Directive(SED)file 创建你的CAB压缩包信息文件,也可以选择不创建。

10、选择“下一步”就可以创建你的压缩文件了。
二、说明:虽然压缩率比较高,又是系统自带的,但它只能添加文件来创建压缩包,不能将文件夹也同时进行压缩,使用时还是RAR显得更方便些。




Internet 软件分发单位是“软件包”,它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 类文件或小程序。当 Web 页上 OBJECT 元素的 CODEBASE 特性引用包含.inf 文件的 CAB 文件时,Internet Explorer 3.0 和更新的版本将自动把 CAB 文件作为软件分发单位。
第一步:创建一个inf文件:
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。
一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下,
与现有硬盘中文件版本号相同的文件不被下载。
要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况,
请参考平台软件开发工具包(Platform SDK,)的设置和系统管理服务(Setup and System Management Services)
部分的\Setup API\Overview\INF Files目录下的内容。
下面就以我自己写的一个videoweb.dll为例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.
video.inf的例子:
;inf file for videoweb.dll
[version]
signature=$CHICAGO$

[DestinationDirs]
DLLSysCopy=11
IniWinCopy=25

[DefaultInstall]
CopyFiles=DllSysCopy,IniWinCopy
AddReg=videoReg

[DllSysCopy]
tdiio.dll
Decoder.dll
VideoWeb.dll

[IniWinCopy]
camer.ini
user.ini
xvidMP4.ini

[videoReg]
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC},"",%REG_SZ%,"Video Class"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Control
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"", %REG_SZ%,"%11%\VideoWeb.dll"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"ThreadingModel",%REG-SZ%,"Apartment"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus,"",%REG_SZ%,"0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus\1,"",%REG_SZ%,"131473"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ProgID,"",%REG_SZ%,"VideoWeb.1.1"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Programmable
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ToolboxBitmap32,"",%REG_SZ%,"%11%\VideoWeb.dll,102"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\TypeLib,"",%REG_SZ%,"{FC4352CB-BB55-498C-BB21-E4BAE2FC2584}"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Version,"",%REG_SZ%,"1.0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\VersionIndependentProgID,"",%REG_SZ%,"VideoWeb.1"
;end of INF file

DestinationDirs:指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32;
10 规定为窗口目录、WINDOWS或者WINNT。
videoReg:如果是自己写的控件:可以在本地先用regsvr32 xxx.dll注册后,从注册表中找到上面的注册信息。
当然以上仅仅是在internet上分发软件时一个很简单的inf文件,还有更复杂的inf文件。请看SDK。

第二步:把video.inf, tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.放在一个文件夹中。
第三步:开始制作cab文件,我是用IExpress工具制作的(该工具在winnt\system32目录下面)。
1:选择创建新的自解压指令文件。
2:选择仅创建压缩文件(ActiveX安装)
3:点击添加把你要供别人下载的文件添加
4:点击浏览 输入*.cab文件的存放地址(包含文件名)
5:就随便了
好了制作完成。
现在在你的网页中使用该控件,当别人访问你的网页时,如果他的机子上没有你的控件,浏览器就会自动下载安装。因为你的控件可能没有获得签名
因此得在你的浏览器中把浏览器的安全级别降低。在internet 工具中选择安全,选择自定义。找到下载未签名的ActiveX控件。选择其下面的提示或者启用。
在网页中插入:
codebase="video.cab#version=2,0,0,1"
id=Video1 style="HEIGHT: 507px; WIDTH: 718px">
该句.
注意:得把*.cab 文件你和的网页放在同一目录下。或者在codebase中指定*.cab的路径。




1个例子
[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
PowerPlayer.dll=PowerPlayer.dll
PowerList.ocx=PowerList.ocx
PSNetwork.dll=PSNetwork.dll

[PowerPlayer.dll]
file-win32-x86=thiscab
clsid={5EC7C511-CD0F-42E6-830C-1BD9882F3458}
FileVersion=1,0,0,98
RegisterServer=yes

[PowerList.ocx]
file-win32-x86=thiscab
clsid={20C2C286-BDE8-441B-B73D-AFA22D914DA5}
FileVersion=1,0,0,6
RegisterServer=yes

[PSNetwork.dll]
file-win32-x86=thiscab



http://msdn.microsoft.com/...
这里有inf文件格式的说明,然后你要下载cabarc对inf以及ocx打包,还要用signcode对打包后的文件进行签名。
例子:w3socket.inf
======================
[Version]
Signature="$Chicago$"
AdvancedINF=2.5

[DefaultInstall]
CopyFiles=DLLFiles
RegisterOCXs=RegisterOCXSection
AddReg=AddToRegistry

[DefaultUninstall]
cleanup=1
Delfiles=DLLFiles
UnRegisterOCXs=UnRegisterOCXSection
DelReg=DeleteRegistry

[RegisterOCXSection]
%11%\socket.dll

[UnRegisterOCXSection]
%11%\socket.dll

[SourceDisksNames]
1="W3Socket",W3Socket.cab,1

[SourceDisksFiles]
socket.dll=1

[DLLFiles]
socket.dll

[inffile]
w3socket.inf

[DestinationDirs]
DLLFiles=11
======================
然后用命令cabarc n W3Socket.cab W3Socket.inf Socket.dll,将Socket.dll和W3Socket.inf打包到W3Socket.cab
最后用命令signcode -spc ..\jinhu.spc -k jinhu -n "W3Socket Component" -i http://www.google.com -t http://timestamp.verisign.... W3Socket.cab
对W3Socket签名。


用PackageForTheWeb吧,它能够自动生成inf文件,加入数字签名,等等...
www.installshield.com
汉化版可以在http://www.hanzify.org下载


 现在网络上出现了很多在线工具,特别是一些所谓的"黑客"站点提供大量在线破解工具,用来突破网吧限制,为网友提供方便的同时大大提高了自己的访问量,我查看了一下这些在线工具网页,发现它们多是利用"tegoweb"这个让EXE在网页中运行的工具制作出来的,而这个工具是个共享软件,有时间限制,还有一些是利用几个大点的安全或黑客站点提供的控件制作的,看着提示中显示别人的"数字签名",你是不是觉得有点别扭,自己特想改改哪?如果你和我一样是个追求完美的人,请随我一起来自己做个自己的"数字签名"控件,让你的程序在网页中"飞"起来!当然,如果你有很多Money的话,花钱去证书颁发机构申请也未尝不可,但我很穷,而且我专做"好事",只好自己做啦!~.~

首先先看看我们所需的工具,如下:

一、"数字证书"制作软件MakeCert
  makecert.exe是一个微软出品的用来制作"数字签名"的软件,是命令行界面,利用它可以轻松地做出属于自己的个人"数字签名",当然自己做出来的这个数字签名是不属于受信任的证书的,但这并不太影响使用^*^

二、CAB压缩软件包制作工具IEXPRESS
 

  是MAKECAB.EXE的GUI界面程序,用来把程序所需文件压缩打包为CAB格式,便于传输,当然如果你的程序是一个独立的EXE文件时,可以不需要用这个工具打包,但考虑现在多数免费空间不支持EXE格式的文件上传,建议打包!类似的工具还有命令行界面的Cabarc.exe;

三、数字签名软件 Signcode
  我们可以使用signcode.exe和自己的"数字证书"签署自己的软件,给软件加上数字签名,使其可以在网页中运行。

  大伙准备好了吗?下面就和我一起来属于自己的数字签名控件吧,Lets go......

第一步:制作"数字证书"
本次使用makecert的命令如下:
makecert -sv icyfox.pvk -n "CN=冰狐浪子" -ss My -r -b 01/01/1900 -e 01/01/9999
其中
-sv icyfox.pvk   意思是生成一个私匙文件 icyfox.pvk
-n "CN=冰狐浪子" 其中的"冰狐浪子"就是签名中显示的证书所有人的名字,记住要改为你自己的或你想要的名字呀!
-ss My      指定生成后的证书保存在个人证书中
-r        意思是说证书是自己颁发给自己的,呵呵
-b 01/01/1900   指定证书的有效期起始日期,格式为 月/日/年,最低为1900年
-e 01/01/9999   指定证书的有效期终止日期,格式同上,我想9999年你应该是活不到的^)^
至于其他命令暂时用不到,我也不多做介绍啦。
在控制台命令提示状态输入上面命令(当然用批处理也可以),出现如图一:

图一
不需要填私匙密码吧?直接点"无"按钮就可以拉,如果你喜欢麻烦就输入密码,并记住它。好啦!已经在目录下生成了你的私匙文件icyfox.pvk,但证书在哪里?别急,打开IE 的"Internet选项",切换到"内容"标签,看到"证书"按钮没?点它! 出现如图二:


图二
看见没?图中上面那个截止日期为9999-1-1的"冰狐浪子"就是刚才自己生成的证书,把它"导出"为icyfox.cer,好啦,最重要的第一步已经完成!
第二步:把要用到的程序文件打包为CAB格式格式
首先建立runexe.inf文件,内容如下:
[Version]
Signature=$CHICAGO$

[icyfox]
run=%EXTRACT_DIR%\icyfox.exe

[Setup Hooks]
icyfox=icyfox

记得要把上面的"icyfox.exe"改为你的程序名!
然后,运行IEXPRESS.EXE,选中"创建新的自解压缩指令文件",进入下一步,选中"只创建压缩文件(ActiveX安装)",进入下一步把用到的程序包括程序调用的DLL(如果有的话)添加进列表中,千万不要忘记把"runexe.inf"也添加进来呀!点下一步出现如图三:

图三
按照图配置选项后,就连续点"下一步",即可生成icyfox.CAB。
[注:如果你的程序是单独的一个EXE文件,也可以省去本步骤!]

第三步:为icyfox.CAB签署数字签名
运行signcode.exe,选择icyfox.CAB,"签名选项"中的"签名类型"选定"自定义(C)",下一步 "从文件中选择"上面第一步导出的证书文件icyfox.cer,再下一步的私匙选定第一步生成的icyfox.pvk文件,然后进入描述,如图四:

图四
注意,图中"描述(可选)":下的输入框中输入的文字在把程序嵌入网页中是会出现,请你根据"个人爱好"写上相应的描述语句,剩下的就点下一步了事!这样一个使用自己的"数字证书" 签署的具有"数字签名"可以在网页中运行的程序就做好啦!
第四步:当然就是把做好的程序嵌入到网页中,然后上传啦!
加入到网页中的代码如下(CS.HTM):







访问CS.HTM,就会出现如图五:


图五
当访问者点击"是"按钮后,程序就会运行,呵呵,这样的界面你还满意吗?这样的在线工具是不是即可方便网友,又显示出自己的个性呀!更重要的可以给自己的主页增加人气噢!你还等啥?快去做吧!如果你想用它做个控件木马我也无话可说......

因为最近为客户开发WEB系统,迫于页面的烦琐,故想到使用VB来开发控件,使用控件增强页面功能。

不料昨日在部署自己的控件时客户机一直不能正确下载,所以想到用数字签名来解决这个问题

试了好久(也查了好多资料),发布者都说实验成功,可我们却一直不能实现?!

经过一天的忙活,现在终于找到原因了。

实验步骤如下(以下所有文件都是放在同一级文件夹下):

1、在装有.net系统的机器上找到下面的几个工具(因不同版本路径不同,所以各位可以查找一下)
  要用到:makecert.exe cert2spc.exe signcode.exe 三个工具

2、先使用makecert /sv "私钥文件名.pvk" /n "CN=你的信息" "证书文件名.cer",创建相应的
私钥及证书文件(会有成功提示)

3、使用cert2spc "证书文件名.cer" "#7文件名.spc" (会有成功提示)

4、使用VB做好控件,并生成OCX文件,经过打包成.CAB文件(同时还有个测试用的.HTM文件)

5、双击signcode执行。一、选择被加入证书的文件(这儿最容易出错,应选择那个.CAB文件,很多朋友是选了.OCX文件,就是错在这儿了)二、(使用自定义)选择.SPC文件 三、选择.PVK文件。下面就一路NEXT就行了。
posted on 2008-03-30 22:37  YAO'STAR  阅读(4744)  评论(0编辑  收藏  举报