编写INF文件进行文件安装(上)

来源:互联网 发布:linux启动ssh服务命令 编辑:程序博客网 时间:2024/05/19 13:25

安装信息(Setup Information)文件是Windows系统支持的一种安装信息存放文件,一般以INF作为扩展名,因此也叫INF文件。安装信息INF文件与Windows内建的安装服务引擎(API函数库)紧密协同工作,基于其严格的编写语法制作而成的INF文件在拷贝、删除文件,增、删注册表键,更改系统设置等方面都有优秀的表现,完全可以用来实现应用程序文件安装的目标,而且价格免费,透明度高,安装程序小,可完全定制。INF文件是文本文件,可在任何文本编辑器内查看、创建、修改,普通用户使用Windows系统本身提供的记事本、写字板即可进行文件安装脚本的编写。
INF文件安装动作的触发机制
在文件目录中用鼠标右击INF文件,会显示不同于其他扩展名文件的安装菜单。Windows平台在计算机中完成初始安装后,就注册了INF文件的安装动作,此安装动作关联命令行程序基本形式为:
RunDll setupx.dll,InstallHinfSection section reboot-mode inf-name
如笔者目前正在使用的Windows 98系统注册表中,HKEY_CLASSES_ROOT/inffile/install/
command
键的默认值为(install即为安装):
C:/WINDOWS/rundll.exe setupx.dll,InstallHinfSection DefaultInstall 132 %1
其中,rundll程序以命令行的形式调用Windows的动态链接库,其命令格式为:
rundll.exe <DLL
文件名>,<入口点>,<调用参数>
setupx.dll
是安装API(Setup API)函数库,包含了InstallHinfSectionSetupGetInfSectionsSetupInstallFromInfSectionSetupPromptForDiskSetupDiCreateDevRegKeyINF文件内部语法检查、节名搜索、注册键创建等功能函数。setupx.dll与其后的入口点用逗号(,)分开,入口点是大小写敏感的。
Section
INF文件内初始执行节名,首先执行该节内容,默认情况下名称为“DefaultInstall”,系统用户一般不宜对此做任何改动,如被改动,则在后续INF文件的Install节使用相应修改后的名称。
reboot-mode
是重启动参数,指示在INF文件执行后对系统的设置进行了改变,操作系统是否重新启动。该参数一般设为1324,即由安装程序决定是否必须重启动,因为某些设置的改变必须在重启动后才能生效。
inf-name
INF文件的名称,“%1”即为所选中文件本身。
INF文件内部节(Section)的定义
INF文件用特殊的文本文件格式编辑、保存,Windows内建的安装函数遵循既定的语法从INF文件内获取安装信息。INF文件和初始化(或称私有化,Private File)文件相似,采用节(Section)和入口(Entries)的索引机制,节和入口定义了所有操作类型及操作对象。一个INF文件由不同类型的节组成,每类节都有其特殊的目的和不同的实现语法,每节的内容均服务于该节的目的。除了基本的识别INF格式的“Version”节外,INF文件中节的数目和类型没有限制,主要取决于具体安装任务。一个基本的INF文件,一般包含如下几节:
 
节的名称
节的作用
[Version]
INF文件头,提供有效INF文件的版本信息
[DefaultInstall]
安装包含所关联动作(文件拷贝或删除,注册表键值更新、子键增删等)在INF文件内的节名指针,默认情况下首先执行该节内容
[OtherInstall]
[DefaultInstall]节遵循相同的语法,但必须显式的调用,常被用来定义反安装动作
[DestinationDirs]
指定罗列于一个节内将被拷贝、删除或重命名的文件在硬盘上的位置
[FileCopy/Delete/RenameSection(s)]
罗列将被拷贝、删除或重命名的文件
[RegistryUpdateSection(s)]
指定对注册表键值更新、子键增删等动作
[IniFileUpdateSection(s)]
指定对ini文件的更新、快捷方式可通过该节进行创建
[SourceDisksNames]
罗列文件所在盘盘名、盘卷标、盘序列号
[SourceDisksFiles]
罗列安装时使用的源文件及其所在盘
[Strings]
罗列本地化字符串(或称宏字符串)

表中黑体节名是保留关键字,名称固定,大小写不敏感,斜体节名名称任意,由INF文件编写者确定。每节的标题字符均用括号([])括起。 限于篇幅本文只对黑体节名做进一步的解释。
原创粉丝点击