在我写的专门的文章——绿色软件的制作中(http://dream4ever.org/showthread.php?p=33652#post33652)
,讲到把注册表文件和提取出的软件打包在一起做成绿色软件。但是.REG文件中的路径都是静态的,一旦写好,就不会随着系统的变化而变化,而在.INF文件中,可以使用变量操纵路径,从而可以跟踪安装程序所需要的路径的变化。下面首先以一个完整的例子来演示如何用.INF文件制作绿色软件,然后具体讲解.INF文件的各种用途。
EmEditor的绿化
下载EmEditor的安装文件emed404epx.exe后,发现用WinRAR可以打开,解压后,运行EmEditor,发现丢失了预定义的多种文本格式的语法配置,看来这样做不行,只好采用系统快照的方法了。请随我一步步进行,步骤如下:
1 扫描系统,制订系统快照。这里我仅仅记录当前系统的注册表(因为我认为EmEditor不会向系统目录拷贝文件,如果判断错误,就会导致“绿化”失败),运行ART(Advanced Registery Tracer),扫描一遍注册表。如图EmEditor_snap.PNG,不要关闭ART。
2 安装EmEditor。随便安装到哪里,反正一会就卸载。安装好后,如果需要的话,更改配置,或者配置新的文件类型,例如我就增加了NFO文件类型,设定和NFO文件相关联的字符集,这样可以用EmEditor直接察看NFO文件,不需要专门的察看工具了。
3 记录系统变化。再一次扫描系统,给系统作快照,从ART里面再一次扫描注册表,然后选择菜单命令Registry-〉compare here或者直接用键盘F10,比较结果如图EmEditor_compare.png,点击图中那个save to redo file的按钮,存储为EmEditor.reg文件,关闭ART。
4 复制并卸载。复制安装好的EmEditor目录到其他路径,然后卸载EmEditor程序。
5 分析。打开刚刚导出的EmEditor.reg文件,这是一个巨大的reg文件,单单是REG文件就有1兆多,不过不用担心。阅读注册表后,删除和EmEditor无关的注册表项后,如仅仅和资源管理器相关的注册表部分,发现剩下的注册表文件可以分成3个部分。一部分在位于注册表的这个路径[HKEY_LOCAL_MACHINE\SOFTWARE\EmSoft],里面大部分不涉及路径,只有一项记录了EmEditor的路径,就是"ModulePath"="h:\\EmEditor4\\";还有一大部分在注册表的这个路径下面[HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3],里面有很多项都涉及了EmEditor的路径,如"Tmpl"="h:\\EmEditor4\\template.xml";还有就是和EmEditor和txt文件后缀向关联的注册表设置,把EmEditor设置为IE中缺省的源代码察看工具的注册表设置以及注册COM组件EMEDSHL.DLL的注册表部分(和InProcServer32相关的就是)。
6 “绿化”。
6.1 把位于注册表路径路径[HKEY_LOCAL_MACHINE\SOFTWARE\EmSoft]的内容存储到EmEditor_HKLM.reg文件中,把位于注册表路径[HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3]的内容存储到EmEditor_HKCU.reg文件中,把剩下的内容首先除掉COM组件EMEDSHL.DLL的相关部分,然后存储到EmEditor_assoc.reg文件中。
6.2 把EmEditor_HKLM.reg文件和EmEditor_HKCU.reg文件中涉及到路径的注册表内容抽取出来,存储到EmEditorConf.reg文件。
6.3
绿色软件的制作,其中核心的一点就是获得原来软件的安装程序所做出的注册表的改变,然后把该变化导出为一个注册表文件.REG来进一步分析。如果导出的.REG文件不包括绝对路径,那么可以把该注册表文件和提取出的软件打包在一起做成绿色软件。如果导出的.REG文件中包含当前软件的绝对安装路径,那么就必须每次都要手工修改注册表中路径,是很麻烦的,降低了做成绿色软件的意义所在。而使用.INF文件,使用AddReg命令可以轻松容易的解决这个注册表路径的难题。
把EmEditor_assoc.reg文件和EmEditorConf.reg文件用INF的语法转换为INF文件,或者用一个免费小工具reg2inf.exe自动转换,然后把转换得到的EmEditor_assoc.inf文件和EmEditorConf.inf文件中的路径h:\EmEditor4全部用%01%代替。下面是EmEditorConf.inf文件的内容:
[Version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=EmEditorConf_AddReg
hklm,"SOFTWARE\EmSoft\EmEditor v3\Common","ModulePath",,"%01%\"
hkcu,"Software\EmSoft\EmEditor v3\Config\C++","Tmpl",,"%01%\template.cpp"
hkcu,"Software\EmSoft\EmEditor v3\Config\CSS","Tmpl",,"%01%\template.css"
hkcu,"Software\EmSoft\EmEditor v3\Config\HTML","Tmpl",,"%01%\template.htm"
hkcu,"Software\EmSoft\EmEditor v3\Config\Java","Tmpl",,"%01%\template.java"
hkcu,"Software\EmSoft\EmEditor v3\Config\javascript","Tmpl",,"%01%\template.js"
hkcu,"Software\EmSoft\EmEditor v3\Config\JSP","Tmpl",,"%01%\template.jsp"
hkcu,"Software\EmSoft\EmEditor v3\Config\Perl","Tmpl",,"%01%\template.pl"
hkcu,"Software\EmSoft\EmEditor v3\Config\PHP","Tmpl",,"%01%\template.php"
hkcu,"Software\EmSoft\EmEditor v3\Config\Python","Tmpl",,"%01%\template.py"
hkcu,"Software\EmSoft\EmEditor v3\Config\Ruby","Tmpl",,"%01%\template.rb"
hkcu,"Software\EmSoft\EmEditor v3\Config\TeX","Tmpl",,"%01%\template.tex"
hkcu,"Software\EmSoft\EmEditor v3\Config\VBScript","Tmpl",,"%01%\template.vbs"
hkcu,"Software\EmSoft\EmEditor v3\Config\VBScript for EmEditor","Tmpl",,"%01%\template.vbee"
hkcu,"Software\EmSoft\EmEditor v3\Config\Windows Script","Tmpl",,"%01%\template.wsf"
hkcu,"Software\EmSoft\EmEditor v3\Config\XML","Tmpl",,"%01%\template.xml"
6.4 写一个批处理文件install.bat,内容如下:
regedit EmEditor_HKLM.reg
regedit EmEditor_HKCU.reg
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 .\EmEditorConf.inf
regsvr32 EMEDSHL.DLL
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 .\EmEditor_assoc.inf
6.5 把install.bat,EmEditorConf.inf,EmEditor_assoc.inf,EmEditor_HKLM.reg,EmEditor_HKCU.reg5个文件存储到EmEditor的目录,删除其余的注册表文件。
6.6 根据安装步骤和install.bat,写出相应的卸载的批处理文件,这个比较简单。
经过测试后,EmEditor工作正常,也可以注释掉install.bat的最后2行语句,这样EmEditor就不会和系统关联,上面的步骤是在windows 2000上的,对于win9x也同样,而且win9x下面的EmEditor的配置文件和windows 2000的一样,仅仅是程序的版本不同。
把制作好的绿色的EmEditor拷贝到U盘上,需要用的时候,直接执行里面的install.bat文件就可以了(注意,要在EmEditor的目录运行批处理文件),不需要任何文件拷贝。
.INF文件是什么
.INF是 Device Information File 的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用 .INF文件来安装的。.INF文件从 Windows3.X 时代就开始大量被使用了。
.INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然 .INF 只是纯文本文件,但是当我们在文件管理器explorer对 .INF文件按鼠标右键後,如图inf右键.PNG,在右键菜单上就会出现“安装I”命令,这是因为微软公司已在其操作系统 Windows 中内置提供了 Setup API(可以解释.INF脚本文件),我们只需用文本编辑软件编写 .INF文件,便可完成大部份的安装工作,所以尤其是在软体的大小并不是很大的情况下,安装工作不是很复杂的时候,使用 .INF文件来进行安装工作将会是一个好选择。而且如果要安装设备驱动程序,.INF文件是目前唯一的选择。 可以用 .INF文件创建包括注册表条目和目的目录的自定义软件安装指令。.INF文件可以提供有限的平台独立性,并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安装硬件设备的驱动程序服务的,本文的目的就是介绍 .INF文件的功能、结构、并提供了几个 事例来说明如何用.INF文件,如何扩展.INF文件的用途,比如制作绿色软件,仅供参考。
下面首先给出一个驱动程序的.INF文件的例子,如图usbinfpng.png,是我从Windows2000中抽取出来的用于Win98se的USB存储设备驱动的usbstor.INF文件,删除了大部分内容,紧紧保留了一个基本的.INF文件的框架。
因为创e 成就无限! ┆ 创e下载:下载绿色!