接下来是RegisterServer,可以取两个值yes和no,如果为yes则说明ie要注册该dll,如果是no就不必了;再下来是DestDir,它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到\Windows或者\WinNT下;如果是11,则放到\Windows\System或者\WinNT\System32下;如果是空(就是没有值)则会放到\Windows或者\WinNT下的Downloaded Program Files目录下;最后是FileVersion,这个就比较明显了,说明了ctrl1.dll的版本号 。有时候我们使用VB来开发控件的时候,需要将VB的虚拟机装上去,它需要一些其它的说明的,简单地讲一下吧:在[Add.Code]中增加一项MSVBVM60.DLL=MSVBVM60.DLL(以VB6为例)下面是MSVBVM60.DLL区域:[MSVBVM60.DLL]hook=MSVBVM60.cab_InstallerFileVersion=6,0,81,76FileVersion很明显,是版本号,就不再说发,就说说hook吧 。
hook区域是在安装的时候需要执行的区域,它分为两种,一种是有条件的,另外一种是无条件的,无条件的hook区域是必须执行的,反之则根据条件判断是否执行 。以[Setup Hooks]标记的区域是无条件区域,如下所示[Setup Hooks] hookname=section-name[section-name]run=%EXTRACT_DIR%\setup.exe无条件区域常用来通过一个inf文件执行一个安装程序,这就是我们在资源管理器右键点击一个inf文件时在执行安装这样的菜单的原因了当ie下载了一个cab文件,如果文件中没有[Add.Code],则处理[Setup Hooks]区域,运行run所指定程序,哧哧,上面就是setup.exe;条件区域则为在一定条件下执行,前面为MSVBVM60.DLL指定的hook区域就是一个条件区域,如果在MSVBVM60.DLL指定的CLSID或者version不能满足需要而且没有file这个命名值,则执行hook所指定的区域 。
[MSVBVM60.cab_Installer]file-win32-x86=/controls/vb6/VBRun60.cabrun=%EXTRACT_DIR%\VBRun60.exe上面[MSVBVM60.cab_Installer]是一个hook区域,它也包含了一个file值,指定一个URL,表示MSVBVM60.DLL可以从这个URL下载得到;run则说明了执行哪一个文件这里有必要说明一下的是,MS对一些常用的Redistributable Microsoft DLLs可以通过指定CODEBASE属性为/controls,这样在cab文件中就中需要包含这些文件,在计算机上有一个文件redist.txt上面的dll就是Redistributable Microsoft DLLs创建一个cab文件:cabarc N ctrl1.cab ctrl1.inf ctrl1.dllN表示要创建一个新的文件,ctrl1.cab是创建的文件名,ctrl1.inf是cab的inf,后而是需要加到cab里的文件,可以使用通配符 。然后就可以将cab文件放到网页上了这里也在一个version,不过这里的version是指控件的version,而inf里的是文件的version 。
制作电子签名:首先从下面的网址下载制作签名的工具SignCode,地址是/workshop/gallery/tools/authenticode/authcode.asp从签名授权中心如VeriSign或者你的局域网上运行的Microsoft Certificate Server授权服务器得到一个certificate,在申请授权的过程你会得到一个私钥 。也可以使用MakeCert.exe和Cert2Spc.exe创建的私钥进行测试,方法是首先使用MakeCert创建一个X.509的 。
4. 扩展名为inf的文件的功能是什么 INF文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑,如:记事本、写字板等 。INF文件有一整套的编写规则,每一个INF文件都是严格按照这些规则来编写的 。
*规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来 。这些节名有些是系统定义好的,有一些是用户自定义的 。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中) 。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起 。
*规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的 。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开 。