和平社区

 找回密码
 注 册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: 懿zi

绿色软件知识大全!

[复制链接]
 楼主| 发表于 2007-1-19 03:17:05 | 显示全部楼层
<span class="tpc_content"><font size="2">扩展使用.INF文件-制作免安装的绿色软件<br/><br/>讲到把注册表文件和提取出的软件打包在一起做成绿色软件。但是.REG文件中的<br/><br/>路径都是静态的,一旦写好,就不会随着系统的变化而变化,而在.INF文件中,<br/><br/>可以使用变量操纵路径,从而可以跟踪安装程序所需要的路径的变化。下面首先<br/><br/>以一个完整的例子来演示如何用.INF文件制作绿色软件,然后具体讲解.INF文件<br/><br/>的各种用途。<br/><br/>EmEditor的绿化<br/><br/>下载EmEditor的安装文件emed404epx.exe后,发现用WinRAR可以打开,解压后,<br/><br/>运行EmEditor,发现丢失了预定义的多种文本格式的语法配置,看来这样做不行<br/><br/>,只好采用系统快照的方法了。请随我一步步进行,步骤如下:<br/><br/>1 扫描系统,制订系统快照。这里我仅仅记录当前系统的注册表(因为我认为<br/><br/>EmEditor不会向系统目录拷贝文件,如果判断错误,就会导致“绿化”失败),<br/><br/>运行ART(Advanced Registery Tracer),扫描一遍注册表。如图<br/><br/>EmEditor_snap.PNG,不要关闭ART。<br/><br/>2 安装EmEditor。随便安装到哪里,反正一会就卸载。安装好后,如果需要的话<br/><br/>,更改配置,或者配置新的文件类型,例如我就增加了NFO文件类型,设定和NFO<br/><br/>文件相关联的字符集,这样可以用EmEditor直接察看NFO文件,不需要专门的察<br/><br/>看工具了。<br/><br/>3 记录系统变化。再一次扫描系统,给系统作快照,从ART里面再一次扫描注册<br/><br/>表,然后选择菜单命令Registry-〉compare here或者直接用键盘F10,比较结果<br/><br/>如图EmEditor_compare.png,点击图中那个save to redo file的按钮,存储为<br/><br/>EmEditor.reg文件,关闭ART。<br/><br/>4 复制并卸载。复制安装好的EmEditor目录到其他路径,然后卸载EmEditor程序<br/><br/>。<br/><br/>5 分析。打开刚刚导出的EmEditor.reg文件,这是一个巨大的reg文件,单单是<br/><br/>REG文件就有1兆多,不过不用担心。阅读注册表后,删除和EmEditor无关的注册<br/><br/>表项后,如仅仅和资源管理器相关的注册表部分,发现剩下的注册表文件可以分<br/><br/>成3个部分。一部分在位于注册表的这个路径<br/><br/>[HKEY_LOCAL_MACHINE\SOFTWARE\EmSoft],里面大部分不涉及路径,只有一项记<br/><br/>录了EmEditor的路径,就是"ModulePath"="h:\\EmEditor4\\";还有一大部分在<br/><br/>注册表的这个路径下面[HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3],<br/><br/>里面有很多项都涉及了EmEditor的路径,如"Tmpl"="h:\\EmEditor4<br/><br/>\\template.xml";还有就是和EmEditor和txt文件后缀向关联的注册表设置,把<br/><br/>EmEditor设置为IE中缺省的源代码察看工具的注册表设置以及注册COM组件<br/><br/>EMEDSHL.DLL的注册表部分(和InProcServer32相关的就是)。<br/><br/>6 “绿化”。<br/><br/>6.1 把位于注册表路径路径[HKEY_LOCAL_MACHINE\SOFTWARE\EmSoft]的内容存储<br/><br/>到EmEditor_HKLM.reg文件中,把位于注册表路径<br/><br/>[HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3]的内容存储到<br/><br/>EmEditor_HKCU.reg文件中,把剩下的内容首先除掉COM组件EMEDSHL.DLL的相关<br/><br/>部分,然后存储到EmEditor_assoc.reg文件中。<br/><br/>6.2 把EmEditor_HKLM.reg文件和EmEditor_HKCU.reg文件中涉及到路径的注册表<br/><br/>内容抽取出来,存储到EmEditorConf.reg文件。<br/><br/>6.3 <br/>绿色软件的制作,其中核心的一点就是获得原来软件的安装程序所做出的注册表<br/><br/>的改变,然后把该变化导出为一个注册表文件.REG来进一步分析。如果导出<br/><br/>的.REG文件不包括绝对路径,那么可以把该注册表文件和提取出的软件打包在一<br/><br/>起做成绿色软件。如果导出的.REG文件中包含当前软件的绝对安装路径,那么就<br/><br/>必须每次都要手工修改注册表中路径,是很麻烦的,降低了做成绿色软件的意义<br/><br/>所在。而使用.INF文件,使用AddReg命令可以轻松容易的解决这个注册表路径的<br/><br/>难题。<br/>把EmEditor_assoc.reg文件和EmEditorConf.reg文件用INF的语法转换为INF文件<br/><br/>,或者用一个免费小工具reg2inf.exe自动转换,然后把转换得到的<br/><br/>EmEditor_assoc.inf文件和EmEditorConf.inf文件中的路径h:\EmEditor4全部用<br/><br/>%01%代替。下面是EmEditorConf.inf文件的内容:<br/>[Version]<br/>Signature="$CHICAGO$"<br/>[DefaultInstall]<br/>AddReg=EmEditorConf_AddReg<br/><br/>hklm,"SOFTWARE\EmSoft\EmEditor v3\Common","ModulePath",,"%01%\"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\C++","Tmpl",,"%01%<br/><br/>\template.cpp"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\CSS","Tmpl",,"%01%<br/><br/>\template.css"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\HTML","Tmpl",,"%01%<br/><br/>\template.htm"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\Java","Tmpl",,"%01%<br/><br/>\template.java"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\javascript","Tmpl",,"%01%<br/><br/>\template.js"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\JSP","Tmpl",,"%01%<br/><br/>\template.jsp"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\Perl","Tmpl",,"%01%<br/><br/>\template.pl"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\PHP","Tmpl",,"%01%<br/><br/>\template.php"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\Python","Tmpl",,"%01%<br/><br/>\template.py"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\Ruby","Tmpl",,"%01%<br/><br/>\template.rb"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\TeX","Tmpl",,"%01%<br/><br/>\template.tex"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\VBScript","Tmpl",,"%01%<br/><br/>\template.vbs"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\VBScript for <br/><br/>EmEditor","Tmpl",,"%01%\template.vbee"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\Windows Script","Tmpl",,"%<br/><br/>01%\template.wsf"<br/>hkcu,"Software\EmSoft\EmEditor v3\Config\XML","Tmpl",,"%01%<br/><br/>\template.xml"</font><br/></span>
 楼主| 发表于 2007-1-19 03:17:47 | 显示全部楼层
<font size="2">6.4 写一个批处理文件install.bat,内容如下:<br/>regedit EmEditor_HKLM.reg<br/>regedit EmEditor_HKCU.reg<br/>RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 <br/><br/>.\EmEditorConf.inf<br/>regsvr32 EMEDSHL.DLL<br/>RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 <br/><br/>.\EmEditor_assoc.inf<br/><br/>6.5 把install.bat,EmEditorConf.inf,EmEditor_assoc.inf,<br/><br/>EmEditor_HKLM.reg,EmEditor_HKCU.reg5个文件存储到EmEditor的目录,删除<br/><br/>其余的注册表文件。<br/><br/>6.6 根据安装步骤和install.bat,写出相应的卸载的批处理文件,这个比较简<br/><br/>单。<br/>经过测试后,EmEditor工作正常,也可以注释掉install.bat的最后2行语句,这<br/><br/>样EmEditor就不会和系统关联,上面的步骤是在windows 2000上的,对于win9x<br/><br/>也同样,而且win9x下面的EmEditor的配置文件和windows 2000的一样,仅仅是<br/><br/>程序的版本不同。<br/>把制作好的绿色的EmEditor拷贝到U盘上,需要用的时候,直接执行里面的<br/><br/>install.bat文件就可以了(注意,要在EmEditor的目录运行批处理文件),不<br/><br/>需要任何文件拷贝。<br/><br/>.INF文件是什么<br/><br/>.INF是 Device Information File 的缩写,是微软公司为供硬件设备制造商发<br/><br/>布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用 .INF文件<br/><br/>来安装的。.INF文件从 Windows3.X 时代就开始大量被使用了。  <br/>.INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本<br/><br/>(SetupScript)。虽然 .INF 只是纯文本文件,但是当我们在文件管理器<br/><br/>explorer对 .INF文件按鼠标右键後,如图inf右键.PNG,在右键菜单上就会出现<br/><br/>“安装I”命令,这是因为微软公司已在其操作系统 Windows 中内置提供了 <br/><br/>Setup API(可以解释.INF脚本文件),我们只需用文本编辑软件编写 .INF文件<br/><br/>,便可完成大部份的安装工作,所以尤其是在软体的大小并不是很大的情况下,<br/><br/>安装工作不是很复杂的时候,使用 .INF文件来进行安装工作将会是一个好选择<br/><br/>。而且如果要安装设备驱动程序,.INF文件是目前唯一的选择。 可以用 .INF文<br/><br/>件创建包括注册表条目和目的目录的自定义软件安装指令。.INF文件可以提供有<br/><br/>限的平台独立性,并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安<br/><br/>装硬件设备的驱动程序服务的,本文的目的就是介绍 .INF文件的功能、结构、<br/><br/>并提供了几个 事例来说明如何用.INF文件,如何扩展.INF文件的用途,比如制<br/><br/>作绿色软件,仅供参考。<br/><br/>下面首先给出一个驱动程序的.INF文件的例子,如图usbinfpng.png,是我从<br/><br/>Windows2000中抽取出来的用于Win98se的USB存储设备驱动的usbstor.INF文件,<br/><br/>删除了大部分内容,紧紧保留了一个基本的.INF文件的框架。<br/><br/>.INF文件的格式<br/><br/>在图usbinfpng.png中,可以看到.INF文件是由许多节(Section)组成,与.INI<br/><br/>文件类似,整个.INF文件由几个节组成,节名用方括号扩起来,如version 节,<br/><br/>Manufacturer节,和Strings节等等。而每个节又由一系列的条目组成,每个条<br/><br/>目都是是由一个键(Key)与一个值(Value)组成,都是“Key=Value”这样的<br/><br/>形式,在这些节中定义的项目可以完成硬件的自动检测和软件(包括驱动程序)<br/><br/>的安装。.INF文件中分号后面的字符串是注释。在一个 .INF文件中,所有跟随<br/><br/>在分号(;)后的文字都会被视为注释。注释并不一定要在新行开始,可以在一<br/><br/>行文字後面加入注释。<br/><br/>.INF文件案格式和作用如下所示:<br/><br/>[Version] 节: 包含对此 .INF文件的简短描述与此 .INF文件支持的设备类型<br/><br/>的信息。用于确认 .INF文件的基本版本信息。任何.INF文件都必须 包括这个节<br/><br/>。<br/>在图usbinfpng.png中,[Version] 节中的语句 Signature="$CHICAGO$"表明这<br/><br/>个.INF文件可以用于windows 95以后的所有平台上,目前来说就是win98,winme<br/><br/>,winnt4,win2k,winxp,win2k3。这种.INF文件比较多见。如果[Version]节<br/><br/>中的签名条目是 Signature="$Windows 95$",表明这个.INF文件可以用于<br/><br/>windows 95以后的Win9x平台上,目前来说就是win98,winme。 如果[Version]<br/><br/>节中的签名条目是 Signature="$WINDOWS NT$",表明这个.INF文件可以用于<br/><br/>WindowsNT系列的平台上,包括winnt4,win2k,winxp,win2k3。WIN9x系列的操<br/><br/>作系统的SetupAPI将会拒绝执行这种类型的.INF文件。<br/><br/>[Manufacturer] 与 [Manufacturer Name] 节: 列出此 .INF文件可辨识的所有<br/><br/>硬件设备,并列出了开发该硬件的厂商名称,主要用于硬件设备的安装。在设备<br/><br/>驱动程序的.INF文件中必须包括[Manufacturer]节与 [Manufacturer Name] 节<br/><br/>。对应到图usbinfpng.png中就是[Manufacturer]节和[Microsoft]节,安装新硬<br/><br/>件的向导中列出来的厂商名字和设备名称就是来自这两个节。这行语句“%<br/><br/>MfgName%=Microsoft” 的等号右边的名字指明设备制造商是Microsoft,等号左<br/><br/>边是厂商的名字,图中的厂商名称是"Microsoft"(在后面讲到的[Strings]节中<br/><br/>)。在一个.INF文件中可以有多个设备制造商的名字,都必须放在<br/><br/>[Manufacturer]节中,同时[Manufacturer Name] 节可以列出该厂商的多种设备<br/><br/>。 [Manufacturer Name] 节区含有对要安装的设备的描述,并为要安装的设备<br/><br/>指出 [Install] 节区。 [Manufacturer Name]节语法:<br/>[manufacturer-name]<br/>device-description=install-section-name,device-id[,compatible-device-<br/><br/>id]...<br/>device-description就是对要安装的设备的描述。install-section-name就是此<br/><br/>设备的 [Install] 节区名称,manufacturer-name 节区名称必须已在 <br/><br/>[Manufacturer] 节区中被定义。device-id是此设备的硬件标志符,每个厂家的<br/><br/>不同的硬件对应着不同的设备标志符。<br/>对应到图usbinfpng.png中,就是这行语句“%GenericBulkOnly.DeviceDesc%<br/><br/>=USBSTOR_BULK, USB\Class_08&amp;SubClass_02&amprot_50”等号左边是设备的描述<br/><br/>,也就是设备名字是"USB Mass Storage Device",而等号右边的<br/><br/>USB\Class_08&amp;SubClass_02&amprot_50是设备标志符,这个标志符是对应到一类的<br/><br/>硬件设备,就是USB存储设备,操作系统检测到USB存储设备,安装相应的驱动的<br/><br/>时候,就会从设备驱动的安装节即[USBSTOR_BULK]节开始安装驱动。可以看出来<br/><br/>此.INF文件可以用于通用的USB存储设备"USB Mass Storage Device"的驱动程序<br/><br/>的安装。<br/>普通的安装软件的.INF文件中,不包括[Manufacturer] 与 [Manufacturer <br/><br/>Name] 节,即使包含,也不会执行它们,这2个节仅仅用于硬件的设备驱动中起<br/><br/>作用。<br/><br/>[Install] 节: 描述设备驱动程序与硬件设备的实际属性。它也定义了所有 <br/><br/>[Install] 节的名称,在此定义的节中包含了安装该设备的信息和命令。默认情<br/><br/>况下,会执行 [DefaultInstall] 节,在图inf右键.PNG中,Install操作就会执<br/><br/>行[DefaultInstall] 节。[DefaultInstall] 节中包含指向其他节的指针,该节<br/><br/>可用于指定要复制和删除的文件、注册表的更新、.INF文件的更新等。<br/>对应到图usbinfpng.png中,[Install] 节就是[USBSTOR_BULK]节,其中要执行<br/><br/>复制文件CopyFiles和添加注册表项目AddReg2种操作。<br/>如果是安装普通的软件的.INF文件,可以通过鼠标右键菜单上的“安装”命令来<br/><br/>安装(图inf右键.PNG),这个时候.INF文件必须包括[DefaultInstall]节,也<br/><br/>可以包括其他的[Install]节,用RUNDLL32.EXE <br/><br/>SETUPAPI.DLL,InstallHinfSection [Install]节的名字,这样类似的命令来安<br/><br/>装。<br/>[Install]节的语法:<br/>[install-section-name]<br/>Copyfiles=file-list-section[,file-list-section]...<br/>LogConfig=log-config-section-name<br/>Renfiles=file-list-section[,file-list-section]...<br/>Delfiles=file-list-section[,file-list-section]...<br/>UpdateInis=update-ini-section[,update-ini-section]...<br/>UpdateIniFields=update-inifields-section[,update-inifields-section]...<br/>AddReg=add-registry-section[,add-registry-section]...<br/>DelReg=del-registry-section[,del-registry-section]...<br/>Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...<br/>UpdateCfgSys=update-config-section<br/>UpdateAutoBat=update-autoexec-section<br/>[Install] 节定义了安装程式与硬体驱动需要的资源,以便安装新的驱动程式或<br/><br/>者软件。此节中每个条目都有其特定格式与意义,并非每个条目都是必要的。无<br/><br/>论是安装驱动程序还是普通的软件,最后都要从某一个[Install] 节开始执行。 <br/><br/>[DestinationDirs] 节: 指定硬盘上复制、删除或重命名节文件的位置(例如 <br/><br/>\Windows 或 Windows\System)。 .INF文件通过[DestinationDirs]节来指定操<br/><br/>作的目标路径,语法如下:<br/>[DestinationDirs] <br/>file-list-section =ldid[, subdir ] <br/>DefaultDestDir=ldid[, subdir ]<br/>[DestinationDirs] 节定义了 [file-list-section] 节中指定的操作(可以是 <br/><br/>CopyFiles、RenFiles 或 DelFiles 节)的目标目录。DefaultDestDir命令可以<br/><br/>为 .INF文件中的任何没有明确在[DestinationDirs]节中命名的CopyFiles、<br/><br/>RenFiles或DelFiles节指定默认目标文件夹。<br/>在.INF文件中,使用逻辑磁盘标识符 (LDID) 来表示路径,如下表:<br/>00 Null LDID - 可用于创建新的 LDID <br/>01 Source Drive:\pathname <br/>10 Windows 文件夹(等价于%windir%目录 ) <br/>11 System 文件夹 <br/>12 IOSubsys 文件夹 <br/>13 Command 文件夹 <br/>17 Inf 文件夹 <br/>18 Help 文件夹 <br/>20 Fonts <br/>21 Viewers <br/>22 VMM32 <br/>23 Color 文件夹 <br/>24 包含 Windows 文件夹的驱动器根目录 <br/>28 Host Winboot <br/>30 启动盘的根文件夹 <br/>31 虚拟启动盘的主驱动器根文件夹 <br/>如图usbinfpng.png中,这行语句“USBSTOR.CopyList = 10, system32\drivers<br/><br/>”表明USBSTOR.CopyList这个文件列表中文件的目标路径是%windir%\system32<br/><br/>\drivers,其中10代表Windows所在的文件夹,也就是说USBSTOR.CopyList这个<br/><br/>文件列表中文件USBSTOR.SYS在安装驱动的时候将会被复制到%windir%<br/><br/>\system32\drivers文件夹。而usbstor.inf这个文件将会被复制到17,也就是%<br/><br/>windir%\inf文件夹中。<br/>[Strings] 节: 定义并列出上面所使用的可本地化字符串。如果某个特定的字<br/><br/>符串会在 .INF文件中频繁地出现,那么在此节中为它们定义一个字符串变量将<br/><br/>会是个好选择。如图usbinfpng.png中,语句MfgName="Microsoft",定义了<br/><br/>[Manufacturer]节使用的MfgName变量(就是字符串"Microsoft")。 <br/>[FileCopy/Delete/RenameSection(s)] 节:列出要复制、删除或重命名的文件<br/><br/>。 节的名字是CopyFiles,DelFiles,RenFiles。<br/>[RegistryUpdateSection(s)] 节:指定在注册表中添加或删除的项目。 节的名<br/><br/>字是AddReg,DelReg。<br/>[IniFileUpdateSection(s)] 节:指定 .ini 文件的更新。链接将在该节中创建<br/><br/>。 节的名字是 UpdateInis。</font><br/><br/>
 楼主| 发表于 2007-1-19 03:18:23 | 显示全部楼层
<font size="2">[ClassInstall] 节:为设备定义一个新的类别(Class)。主要用于硬件设备的<br/><br/>安装。<br/><br/>[SourceDisksNames] 节: 列出包含文件的磁盘。 <br/><br/>[SourceDisksFiles] 节: 列出每个文件所在的特定磁盘。 <br/>其他的节还有许多,如:Update .ini Fields 节 (UpdateIniFields),Add Ini <br/><br/>File to Registry 节 (Ini2Reg),Update Config.sys 节 (UpdateCfgSys),<br/><br/>Update Autoexec.bat 节 (UpdateAutoBat),Optional Components 节,等等。 <br/><br/>.INF文件是由Windows的SetupAPI解释执行的脚本文件,它的运行过程很简单,<br/><br/>是一种线性的执行,线性的意思就是.INF文件的运行过程不存在分支语句,也就<br/><br/>是没有条件语句,一旦开始执行,就是沿着固定的路线运行。它的运行是按照节<br/><br/>为单位来执行的,从某一个[Install]节开始执行,从上到下执行该节中的条目<br/><br/>,如果该条目是一个节,那么就一条条执行子节中的条目,如此递归执行。<br/>这样的脚本看起来功能很弱,但是对于简单的安装任务已经足够了,安装不外乎<br/><br/>复制文件,添加注册表,修改.INI文件等任务,这些都可以用.INF文件来完成。<br/><br/>对于更复杂的安装要求,如要求安装程序的界面漂亮方便,要求有选择性的安装<br/><br/>,要求安装程序自动修复的功能,就只好求助于其他的工具了,如微软的<br/><br/>Windows Installer,就具备更加强大的功能。<br/><br/><br/>.INF文件的版本<br/><br/>.INF文件的语法是统一的分节语法,随着操作系统的更新,微软逐渐增加了一些<br/><br/>必要的关键字,但是整个的.INF文件的结构不会变化。从语法上来说,.INF文件<br/><br/>都是一个类别。<br/>按照.INF文件的版本来分类,可以分为2类:<br/>1 AdvancedINF,在[Version]节中有“AdvancedINF=2.5,"您需要新版本的 <br/><br/>AdvPack.dll" ”这么一行语句,表明此.INF文件需要AdvPack.dll这个动态链接<br/><br/>库来解释执行,AdvancedINF有一些高级特性,但是在目前用的不太多。<br/>2 普通INF,没有指明需要AdvPack.dll的.INF文件,使用SetupAPI.DLL来解释执<br/><br/>行(win9x系列的操作系统使用Setupx.dll),系统中缺省使用的就是这种普通<br/><br/>INF。<br/><br/>.INF文件的功能<br/><br/>从前面的介绍,能够看出使用 .INF文件可以完成如下功能:<br/>1 复制文件、删除文件、或重新命名文件。<br/>2 新增或删除注册表(Registry)中的项目。<br/>3 修改重要的系统设置文件(如 Autoexec.bat、Config.sys、.INI 等)。<br/>粗看起来,似乎上面提到的第一个功能可以用批处理文件.BAT来完成,第二个功<br/><br/>能可以通过注册表文件.REG来完成,第三个功能现在用得不多,不经常处理.INI<br/><br/>文件了。这样说起来似乎.INF文件也没有太大的优势啊。这种看法是有问题的,<br/><br/>下面我将会着重指出.INF在在这几个方面的应用,而不会仔细讲解.INF的语法。 <br/><br/>下面要提到.INF文件优于别的工具的方面。 <br/><br/>用.INF文件编辑注册表<br/><br/>.INF文件可以编辑操纵注册表,相应的的命令是AddReg和DelReg,语法如下:<br/>AddReg = add-registry-section[,add-registry-section]...<br/>[ add-registry-section] <br/>reg-root-string, [subkey], [value-name], [flag], [value] <br/>[add-registry-section]节定义了将要添加的注册表子键或值名,可以有选择地<br/><br/>设置它的值。<br/>DelReg = del-registry-section[,del-registry-section]...<br/>[ del-registry-section] <br/>reg-root-string, subkey, [value-name] <br/>[ del-registry-section]节定义了将要从注册表中删除子键subkey或值名<br/><br/>value-name。<br/>有时候上网遇到某些网站,修改了IE的主页,然后禁用了REGEDIT工具,这个时<br/><br/>候很多人只好借助于其他第三方工具如魔法兔子等来恢复注册表的编辑权限,其<br/><br/>实这个时候仅仅依靠.INF文件就可以恢复使用REGEDIT工具的权限。 <br/>把下面的这段代码复制到记事本里,另存为jiereg.inf,然后右击它选择“安装<br/><br/>(I)”,就可以了。<br/>[Version] <br/>  Signature="$CHICAGO$" <br/>  [DefaultInstall] <br/>  AddReg=My.Add.Reg<br/>  [My.Add.Reg] <br/>  <br/><br/>HKCU,"SOFTWARE\Microsoft\windows\currentversion\policies\system","disa<br/><br/>bleregistrytools", 0x00010001,"0" <br/>HKLM,"SOFTWARE\Microsoft\windows\currentversion\policies\system","disa<br/><br/>bleregistrytools", 0x00010001,"0" <br/>当然还可以用其他的方法,原理也是一样的,这里仅仅是演示一下.INF文件的用<br/><br/>途。<br/>直接使用注册表文件,有时候还会遇到另外一个缺点,就是.REG文件里面使用16<br/><br/>进制代码表示UNICODE字符串的,如下面的两条注册表语句:<br/>[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\<br/><br/>User Shell Folders]<br/>"Cookies"=hex<br/><br/>(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,<br/><br/>45,00,25,00,5c,00,43,00,6f,00,6f,00,6b,00,69,00,65,00,73,00,00,00,00,0<br/><br/>0<br/><br/>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SoftEther]<br/>"ImagePath"=hex<br/><br/>(2):22,00,44,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,<br/><br/>20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,53,00,6f,00,66,00,74,00,45,0<br/><br/>0,74,00,68,00,65,00,72,00,5c,00,53,00,6f,00,66,00,74,00,45,00,74,00,68<br/><br/>,00,65,00,72,00,2e,00,65,00,78,00,65,00,22,00,20,00,73,00,65,00,72,00,<br/><br/>76,00,69,00,63,00,65,00,00,00,00,00<br/><br/>这上面两条语句难以阅读和修改,手工修改的话很麻烦,其中<br/>"Cookies"的值实际上就是“%USERPROFILE%\Cookies”字符串的UNICODE表示。<br/>"ImagePath"的值实际上就是"D:\Program Files\SoftEther\SoftEther.exe" <br/><br/>service<br/>如果用.INF文件的形式的话,就很简单明白了:<br/>[Version]<br/>Signature="$CHICAGO$"<br/>[DefaultInstall]<br/>AddReg=Folders_AddReg<br/>[Folders_AddReg]<br/>HKCU,"Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell <br/><br/>Folders","Cookies",0x00020000,"%USERPROFILE%\Cookies"<br/>HKLM,"SYSTEM\CurrentControlSet\Services\SoftEther","ImagePath",0x02000<br/><br/>0,"""D:\Program Files\SoftEther\SoftEther.exe"" service"<br/>这个时候可以手工修改里面的路径信息,而.REG文件则很难做到这一点。<br/><br/>用.INF文件编辑.INI文件<br/><br/>.INF文件可以使用UpdateInis命令修改.INI文件的功能也经常需要,UpdateInis<br/><br/>的语法如下:<br/>UpdateInis = update-ini-section[,update-ini-section]...<br/>[ update-ini-section-name] <br/>ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags] <br/>[update-ini-section-name]节给出的 .INF 文件中替换、删除或添加的全部条<br/><br/>目。<br/>ini-file 包含要更改条目的 .ini 文件名。 ini-section 包含要更改条目的节<br/><br/>名。 old-ini-entry 可选,常用形式为 Key=Value。new-ini-entry 可选,常<br/><br/>用形式为 Key=Value。flags 是可选操作标记。<br/>使用逻辑磁盘标识符 (LDID),可以方便的修改.INI文件中的路径信息,当然其<br/><br/>他的条目也同样。举例如下: Total Commander ,是一套极佳的文件管理员,<br/><br/>内含各种压缩与解压缩,类似NC般非常好用的工具,对于文件与路径的寻找,除<br/><br/>一般的复制、删除、搬移、编辑等功能外,还有FTP功能(具有续传、背景传输)<br/><br/>与解决了中文乱码问题,"专题"再也不会变成"彩题"、新增文件分割、文件合并<br/><br/>、文件编码、文件解码(MIME,UUE,XXE)及新的操作介面(浮动工具列)。真是一<br/><br/>套相当强悍可完全取代文件总管的工具程序。<br/>Total Commander依靠wincmd.ini来配置相应的操作特性和功能,于是可以使用<br/><br/>如下的.INF文件修改wincmd.ini中的路径信息:<br/>[version]<br/>Signature="$CHICAGO$"<br/>[DefaultInstall]<br/>AddReg=AddGhister<br/>UpdateInis=UpdateInicmd <br/>[AddGhister]<br/>HKCU,"Software\Ghisler\Total <br/><br/>Commander","IniFileName",0,".\\wincmd.ini"<br/>HKCU,"Software\Ghisler\Total <br/><br/>Commander","FtpIniName",0,".\\wcx_ftp.ini" <br/>[UpdateInicmd]<br/>%01%\wincmd.ini, Configuration,,"InstallDir=%01%"<br/>%01%\wincmd.ini, Configuration,,"Mainmenu=%01%\LANGUAGE\TCExtMenu.mnu"<br/>其中 [AddGhister]节负责修改注册表中记录的wincmd.ini的路径,而<br/><br/>[UpdateInicmd]节负责修改wincmd.ini文件红的相应路径信息,可以看出,一个<br/><br/>简单的.INF文件就完成了修改Total Commander的路径的任务,在Total <br/><br/>Commander5.x版本中,必须修改wincmd.ini文件中的路径信息,这个时候使<br/><br/>用.INF文件是非常方便的。<br/><br/><br/>用.INF文件删除正在使用的文件<br/><br/>有时候由于某些文件正被操作系统使用而无法删除,如某些用于资源管理器的<br/><br/>OCX控件,可以使用.INF文件的DelFiles命令删除,该命令如果发现要删除的文<br/><br/>件被锁定,就会把文件放到系统删除队列中排队,等系统重启动的时候,该文件<br/><br/>就自动被删除了。<br/>Delfiles的语法是:<br/>Delfiles= file-list-section [,file-list-section]...<br/>[file-list-section]<br/>filename,,,1<br/>[file-list-section]节定义了将要删除的文件列表,filename后面的1是一个标<br/><br/>志,指明如果文件当前无法删除,就等到系统重启动后删除。把下面的这段代码<br/><br/>复制到记事本里,另存为delinuse.inf,把这个文件拷贝到无法删除的文件的目<br/><br/>录,然后右击它选择“安装(I)”,就可以删除当前目录下正在使用的setup.exe<br/><br/>和setup2.exe。<br/>[Version]<br/>Signature="$Chicago$"<br/><br/>[DestinationDirs]<br/>DefaultDestDir = 01 ; 当前目录 ,定义了将要删除的文件的路径 <br/>[DefaultInstall] <br/>DelFiles = DELETELIST <br/>[DELETELIST]<br/>setup.exe ,,,1; 将要删除的文件<br/>setup2.exe ,,,1; 将要删除的文件<br/>同样可以使用Copyfiles命令替换系统正在访问的文件。这些功能通过普通的del<br/><br/>和copy命令都无法实现,如果不使用.INF文件,必须使用第三方的软件来完成。<br/><br/>辅助制作绿色软件<br/><br/>在注册表.REG文件中,不可以使用变量,这个缺陷对于需要设置路径的安装程序<br/><br/>来说,是非常致命的弱点,.REG文件中的路径都是静态的,一旦写好,就不会随<br/><br/>着系统的变化而变化,如果需要把安装的程序从C盘改变到D盘,而在.REG文件中<br/><br/>记录了安装路径的话,这个时候直接倒入注册表文件.REG是不行的,导入的注册<br/><br/>表仍然是原来写入的路径。而在.INF文件中,可以使用变量来操纵路径,从而可<br/><br/>以跟踪安装程序所需要的路径的变化。<br/>对于绿色软件的制作,可以看我写的另外的专门的文章——绿色软件的制作,其<br/><br/>中核心的一点就是获得原来软件的安装程序所做出的注册表的改变,然后把该变<br/><br/>化导出为一个注册表文件.REG来进一步分析。如果导出的.REG文件不包括绝对路<br/><br/>径,那么可以把该注册表文件和提取出的软件打包在一起做成绿色软件。如果导<br/><br/>出的.REG文件中包含当前软件的绝对安装路径,那么就必须每次都要手工修改注<br/><br/>册表中路径,是很麻烦的,降低了做成绿色软件的意义所在。而使用.INF文件,<br/><br/>使用AddReg命令可以轻松容易的解决这个注册表路径的难题。<br/><br/>对于绿色软件的安装制作来说,最重要的就是01,也就是源文件夹。下面举一个<br/><br/>例子:<br/>Registry Crawler V4.5 ,是强大的用户和开发者快速定位并配置注册表的工具<br/><br/>软件。一个强大的搜索引擎允许你基于搜索标准查找注册信息。(可以从天空软<br/><br/>件站下载</font><a href="http://www4.skycn.com/soft/2963.html" target="_blank"><font size="2">http://www4.skycn.com/soft/2963.html</font></a><font size="2">),安装完成后导出的注册表<br/><br/>包含着如下一条语句:<br/>[HKEY_LOCAL_MACHINE\SOFTWARE\4Developers\RCrawler\AppPath]<br/>@="F:\\tools\\Reg\\RCrawler"<br/>其中“F:\tools\Reg\RCrawler”是安装路径。<br/>而改写为.INF文件就是:<br/>[version]<br/>Signature="$CHICAGO$"<br/>[DefaultInstall]<br/>AddReg=Add<br/>[Add]<br/>HKLM,"SOFTWARE\4Developers\RCrawler\AppPath","",0,"%01%"<br/>注意里面的%01%就代表当前的安装路径。<br/><br/>当我们把F:\tools\Reg\RCrawler这个目录下的文件移动到其他目录时候,要<br/><br/>用.REG文件的方式的话,就必须手工修改注册表文件,而使用前面的.INF文件的<br/><br/>时候,什么都无需修改,只要在文件管理器explorer里面,用鼠标右键执行“安<br/><br/>装”命令的时候,%01%就自动被替换为当前所在的目录了。 <br/><br/>最后,总结一句,注册表文件.REG非常方便和直观,但是对于处理路径的变化的<br/><br/>情况,非常笨拙和不方便,而.INF不如注册表文件直观,但是可以方便的处理路<br/><br/>径信息(包括UNICODE的路径信息),所以应该把.REG文件和.INF文件结合使用<br/><br/>,互相弥补各自的缺点。<br/><br/>.INF文件的生成方法<br/>可以直接手工用一个纯文本的编辑器书写.INF文件,当相对应的.REG文件非常庞<br/><br/>大,条目比较多时候,可以用小工具reg2inf.exe来自动的把.REG文件转换<br/><br/>为.INF文件,然后再进行相应的路径修改,把绝对路径替换为用逻辑磁盘标识符 <br/><br/>(LDID) 来表示的路径。<br/>如果涉及到文件操作的时候,只好手工写了,目前还没有自动化的工具。<br/><br/><br/>inf 文件的好处是 不像vbs那么强大,甚至有可能由危险的格式化代码<br/>inf的限制很强,这样比其他的脚本文件安全,当然相对的功能就弱,但是也足够<br/><br/>了</font><br/>
 楼主| 发表于 2007-1-19 03:18:47 | 显示全部楼层
<p>双系统互救安装法</p><p></p><p>绿化软件就必须要做软件绿化试验,做绿化试验就要有干净的系统,但现实中不可能只安装干净的操作系统吧,下面介绍一种适合绿软爱好者用的系统安装法,它可以在几个系统之间跳来跳去:</p><p>----------------------------------------------------------------------------------------</p><p>1、先把硬盘分成4个分区,全部采用FAT32格式,以40G分4个区为例:</p><p>C:5G(安装WIN2000/XP系统和WIN2000/XP必装软件,重要资料不能放在这里,你要有个思想准备这个分区可以随时格式化)</p><p>D:5G(安装WIN98系统和WIN98必装软件,注意定期备份“我的文档”目录;)</p><p>E:15G(重点保护对象,安装常用的软件、网站资料、办公软件和其它WIN2000/XP/WIN98公用软件等,重要资料尽量放到这里)</p><p>F:15G(用于备份和下载)</p><p>2、格式化 C/D/E/F 四个分区成为FAT32格式;</p><p>3、用启动盘进入DOS,安装一个干净的WIN98系统到D:\windows,这个系统除了硬件驱动程序外,不安装任何软件,这个系统主要是用于在 WINDOWS 98 下作绿色软件实验用的;</p><p>4、在DOS下,用XCOPY/S命令,将D区的d:\windows和d:\program files两个目录复制到F分区。</p><p>5、重新启动,进入到WINDOWS98图形界面系统中,把常用的软件全部安装好,注意,软件尽量安装到 E 区,不要装在d:\program files目录;</p><p>6、在WINDOWS98系统中,安装 WINDOWS 2000/XP 到 C 分区,注意,不要选择 WINDOWS 升级安装的哪个选项,因为这样它会把你的WINDOWS98覆盖掉,要选“安装一个新的WINDOWS2000”的哪个选项,并把安装路径设置到 C 分区;</p><p>7、安装干净的 WINDOWS 20000/XP 系统,最简安装,除 WINZIP 外,其他软件不要安装,这个系统是用来在 WINDOWS 2000/XP 下作绿色软件试验用的。</p><p>8、重启系统,进入到 WINDOWS 98 系统,在 F 区建立一个“SYS_BAK”目录,并在里面建立四个子目录:</p><p>WIN98_1<br/>WIN98_2<br/>WIN2K_1<br/>WIN2K_2</p><p>用 WINZIP 把 C 区里的 “Documents and Settings”、“Program Files”、“WINNT”三个目录分别压缩为:“Documents and Settings.zip”、“Program Files_2k.zip”、“WINNT.zip”备份到“WIN2K_1”里。</p><p>9、安装好 WINDOWS 20000/XP 系统的常用软件(WINZIP必装),注意:软件尽量安装到 E 区;</p><p>10、备份 C 区:先准备好 GHOST 的 DOS 程序,并复制到F区,在DOS下,运行GHOST,选择分区=&gt;镜像备份功能,将 C 区镜像到 F,如F:\SYS_BAK\DISK_C.GHO;</p><p>11、重新启动系统后进入到WINDOWS 2000/XP,将D:中的 WINDOWS 和 PROGRAM FILES 两个目录分别压缩为ZIP文件,并改名为WIN98_2.ZIP和PROG_2.ZIP,并移到“F:\SYS_BAK\WIN98_2”目录里;同样,把 F 区的干净WIN98系统压缩为 WIN98_1.ZIP和PROG_1.ZIP,并移到“F:\SYS_BAK\WIN98_1”目录里;</p><p>12、整理:随便进入 WIN98 或 WIN2000/XP 系统,在 F 区新建一个如 SYS_BAK 的目录,将WIN98_1.ZIP、PROG_1.ZIP、WIN98_1.ZIP、PROG_1.ZIP、DISK_C.GHO、GHOST 等都移到里面;</p><p>备份完成。</p><p>----------------------------------------------------------------------------------------</p><p>系统维护方法:</p><p>(1)当系统严重混乱到两个系统都不能正常启动时,就拿出最厉害的武器:GHOST IT。<br/>在DOS中进入F:\SYS.BAK中运行GHOST,将DISK_C.GHO恢复到C区,当然,这样你的C区又回到了原始的安装状态,这就是重要资料不放这里的原因。</p><p>(2)当WINDOWS2000只是出现一般性问题时,就 Ghost Explorer IT。<br/>你可以进入WIN98系统,用Ghost Explorer(这个是WINDOWS程序,上面说漏了,也拷贝到F:\SYS.BAK吧)只恢复C:\WINNT目录或其中的部分文件,这样,C基本还保持目前状态;</p><p>(3)当WINDOWS98有问题时,就 ZIP IT。<br/>进入WINDOWS2000系统中,把D:\WINDOWS 目录和D:\PROGRAM FILES删除(杀掉它),再用WINZIP把F:\SYS.BAK中的WIN98_1.ZIP、PROG_1.ZIP恢复成D:\WINDOWS 目录和D:\PROGRAM FILES;</p><p>(4)当你要做软件实验时,或想制作软件绿色备份版时,也ZIP IT。<br/>进入WINDOWS2000中,把D:\WINDOWS 和D:\PROGRAM FILES目录改名为D:\WIN98_1 和D:\PROG_1,用WINZIP把F:\SYS.BAK中的WIN98_1.ZIP、PROG_1.ZIP恢复成D:\WINDOWS 目录和D:\PROGRAM FILES;则一个最原始的纯净WIN98又活灵活现了;通过目录的改名,你可以在纯净WIN98和一般WIN98之间跳来跳去(当然,这不是最方便的办法,但却是最容易实现的方法)</p><p>我从NT时代到现在的WINDOWS2000时代,用这个办法维护系统从未出过事。</p><br/>
 楼主| 发表于 2007-1-19 03:19:23 | 显示全部楼层
<span class="tpc_content"><font size="2">软件精简与绿化专题之概念篇<br/><br/>现在的软件,功能一个比一个多,个头一个比一个大,安装时间也是超级长,平时还不觉得,但如果系统重装,那就有的累了,一个系统安装只花半小时 ,但安装常用软件却得花半天!那么多的功能都是用的到的吗?软件能不能做的小一点?软件就一定要安装后才能使用吗?带着这些疑问,《家用电脑》在本期推出了软件精简与绿化专题,希望读者们看了此文后,能够亲自动手,让我们的软件变得更瘦更方便。<br/>精简软件的概念<br/><br/>现在的软件越做越大,功能越来越丰富,但是对于很多普通用户来说,许多功能都是根本用不到的,甚至都不知道存在这些功能,所以很多电脑爱好者就开始研究精简软件的方法,就是保留大多数常用功能,去掉极少用的功能模块,这样可以极大地减少软件的大小。<br/><br/>比如windows xp,里面有些功能(比如ATM的模块,泰国语言等)对于大多数用户是多余的,于是nuhi开发了nlite程序,可以把windows xp精简到200M左右,某些爱好者甚至可以精简到更小。还有xplite,可以精简安装好的xp系统。又比如我们常用的office软件,同样很多功能都是我们平时用不到,比如office 2003中的DOT NET可编程性支持,一般的用户可能仅仅需要word程序,如果我们去掉office软件中不太常用的组件,就可以office system精简到100M甚至几十M,这样可以把一些常用的软件做到一张光盘上,便于携带。此外,现在很多软件都捆绑了诸如3721,cnnic等插件(比如紫光3.0输入法捆绑了百度的搜索助手),很多用户都在不自愿的情况下被强制安装了这些插件,如果可以把这些插件从捆绑的软件中精简掉,就不会有不小心安装的情况了。<br/><br/>一般来说功能模块划分比较清晰的软件,容易精简也可能精简,如果软件的文件相关性很强,互相依赖,那么就无法精简。<br/><br/>绿色软件的概念<br/><br/>安装完操作系统后,我们一般需要安装一些常用的软件,但是随着我们常用软件的增多,这个安装过程显得越来越令人厌烦:运行setup,然后是选择目标路径,不断的重复这个过程。即使我们的硬盘上已经安装了这个软件,也要重新安装一次,才能正常使用。那么对于硬盘上已经存在的软件,能不能不安装而直接运行,仍然可以工作正常呢?<br/><br/>实践证明,按照是否需要重新安装来分类,可以分为3类:<br/>1 有一部分软件具有不需安装而可以直接运行的特点。<br/>2 还有一部分软件经过改造,可以通过简单的配置而不再需要重新安装就可以正常运行了。<br/>3 有些软件必须重新安装才可以正常运行。<br/><br/>一般来说把前2种类型的不需要安装就可以运行的软件称为绿色软件,绿色软件具有如下优点,对操作系统无污染(恐怕这也是绿色这个名字的由来),不需要安装,方便卸载,便于携带,可以拷贝到便携的U盘上到处运行。一句话概括就是方便无污染。<br/><br/>制作软件的绿化版本就是手工安装,如果软件的配置过程很简单甚至根本不需要配置,这个软件就比较容易绿化。如果软件的安装过程比较复杂,甚至要替换操作系统的核心文件,这时候就不适合做绿化,比如directx。<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br/>精简软件与绿色软件的关系<br/><br/>我们常常听到“精简绿色版”这个名词,那么精简软件和绿色软件有什么关系呢?<br/>一般说来,精简软件与绿色软件有着以下几种关系:<br/>1、仅仅可以精简。有些软件太复杂或者需要替换操作系统模块,不适合绿化。比如office系统很难绿化,但是由于office安装程序的模块化比较好,很容易找出不需要的组件,所以容易精简。<br/>2、仅仅绿化,有些软件功能很单一,没有多余的功能模块,这时候没有什么可以精简的,只能绿化。<br/>3、绿化并且精简,很多时候,绿化软件的同时对软件进行精简,比如上一期的绿化msn messanger,为了便于安装和携带,就是对msn messanger同时绿化和精简。一般来说,绿化的同时伴随着精简,去掉不需要的文件和功能。<br/>4、既不能绿化又不能精简,比如directx安装程序。<br/><br/>明白安装程序<br/><br/>无论是精简还是绿化都要和安装程序打交道,弄明白了安装程序所作的工作,会极大地方便绿化和精简。<br/>目前安装程序有4大类型:<br/>1、微软的Installer制作的安装包,后缀一般是msi,msp,是基于数据库的概念来设计的,具有自修复,按需安装,和windows集成等优点,并且微软在极力推广,已经成为安装程序的标准。目前很多安装制作程序都可以生成msi格式的安装包,老牌的InstallShield 和 Wise 也推出了基于msi的安装制作程序。微软提供的的windows xp 的sdk中包含了免费的msi编辑修改等工具。<br/>2、Iinstallshield制作的基于InstallShield自身安装引擎的安装包,在windows installer以前,多数安装程序都是Installshield制作的。使用winpack v3.0可以解码InstallShield3,5,6引擎的安装包(下载地址:</font><a href="http://family.chinaok.com/down/200516/winpack.rar" target="_blank"><font size="2">http://family.chinaok.com/down/200516/winpack.rar</font></a><font size="2">)。<br/>3、Wise制作的基于Wise自身安装引擎的安装包,比installshield小巧,用的也比较广泛。使用E_WISE(下载地址:</font><a href="http://family.chinaok.com/down/200516/e_wise.zip" target="_blank"><font size="2">http://family.chinaok.com/down/200516/e_wise.zip</font></a><font size="2">)或者使用Wise Unpacker GUI(下载地址:</font><a href="http://family.chinaok.com/down/200516/wun.rar" target="_blank"><font size="2">http://family.chinaok.com/down/200516/wun.rar</font></a><font size="2">)可以解码wise软件包。 <br/>4、inno ,NSIS(Nullsoft),Installer VISE等制作的安装包,也是各有特色。total comander 有一个插件,叫WCXfar_IETotal,可以直接解压缩如下类型的安装程序:- Wise - Vise - Inno Setup - Gentee Installer - InstallShield - NullSoft Installer (ver&gt;=1.10) - SetupFactory - Eschalon - MSI Windows Installer,不过还不是很完善,速度也比较慢。<br/><br/>软件的精简过程<br/><br/>软件的精简就是去掉不需要的功能模块,删除相对应的文件,这里面关键是找出软件中各不同模块所对应的文件,一般有几种方法:<br/>1、分析文件名字和目录,进行推测和实验,删掉或者把某些文件移动到别的目录,看看软件功能是否受影响,这可以知道各个功能模块所对应的文件了。这个方法适合比较小巧的软件或者功能划分比较明显的软件(比如adobe acrobat软件,划分为Acrobat,Acrobat Elements,ActiveX,Designer 7.0,Distillr等几个目录,可以猜测各个目录所对应的功能模块)。当文件和目录比较多并且没有明确的名字指明模块划分的时候,这种方法就很繁琐和困难了。<br/>2、直接分析安装软件包,比如msi格式的安装包,天生就是按照模块来划分的,使用msi编辑工具,可以很容易的了解各个模块所对应的文件,所以虽然office 比较复杂,难以绿化,但是容易精简。这种方法需要比较完善的安装程序包的分析工具。除了msi之外的大多数安装包的相关分析工具都不太完善。<br/>3、快照测试。安装的时候,不要选择某项功能模块安装,记录下这时候的系统快照,然后安装该功能模块,再一次记录系统快照,对比快照前后的变化,来了解模块和文件对应关系。<br/><br/>软件的“绿化”过程<br/><br/>绿色软件的制作,简称软件的“绿化”,绿色软件的制作实际上就是我们自己完成安装程序的工作。没有什么固定的方法,基本上是猜测加上试验,不同类别的绿色软件分别有不同的制作策略。<br/>笔者一般遵循如下步骤制作一个绿色软件:<br/>1、判断:猜测这个软件能不能制成绿色软件,从功能,从你对它的了解,如果你觉得这个软件和系统的关系非常紧密,就不要继续下去了,还是用原始的安装程序最保险最方便,这样的例子有directx9 ,IE6,Norton的反病毒软件等等。这样的判断可以节省你的时间,当然你可以忽略这一步,尝试制作绿色软件,那么就转到第2步。<br/>2、“绿化”:对于不同的软件有不同的方法,没有一定的规则,但是总的来说,就是理解软件的安装过程,转换为绿色安装,在这个过程中,可能需要尝试多个方法,也可能最后由于软件的复杂性或者某些特性,导致无法绿化。要有失败的思想准备,具体的绿化方法随后讲述。<br/>3、测试:“绿化”后的测试最好到一个全新安装的操作系统中测试,如果你要在多个操作系统中使用这个软件,还要在其它的操作系统中测试,有些软件的文件随着操作系统的不同而不同,这个时候你需要在不同的操作系统中进行”绿化“过程,最后综合为一个完整的适应多操作平台的绿色软件。<br/>“绿化”方法,需要根据经验选择不同的“绿化”方法,也可能需要不断尝试不同的方法,直到成功为止。按照先易后难的次序,具体的方法包括:<br/>1、解压缩。<br/>2、安装然后卸载。<br/>3、反编译安装程序。<br/>4、观察反安装程序和log文件。卸载是安装的逆过程,如果知道怎么卸载,那么也可以推测出如何安装。<br/>5、比较系统快照。就是首先在安装软件之前,把系统的状态记录下来,主要包括注册表和系统目录的所有的文件状态。然后就是安装软件。安装完成后,再一次记录系统状态。最后就是比较前后两个系统状态的不同,而得知安装程序所做的工作。 通过上面分析安装程序的动作,把安装程序的工作分解为复制文件,注册COM组件,安装服务驱动,注册表配置等几个部分,把这些明显分割出来有助于制作绿色安装的软件。对于需要更复杂的步骤来安装的软件,还是使用原来的安装程序比较保险。<br/><br/>从上面的叙述可以看出,绿化和精简既紧密联系又相互区别,在下一篇将讲3个例子来具体讲述绿化和精简的概念。</font></span>
 楼主| 发表于 2007-1-19 03:19:50 | 显示全部楼层
<span class="tpc_content"><font size="2">呼吁“绿色软件”<br/><br/>&nbsp; 品位越来越高的现代人,对生活的质量的要求也越来越高了:吃的是绿色食品,穿着是绿色纺织物。在各个方面都讲究天然环保。我们开发和使用软件的人都是有知识,有素质的“新人类”,塔着前进的步伐,立足时代的前沿,我们更应该时刻注意自己的言行,为绿色环保做出我们的努力,所以在这里我们要呼吁有识之士开发“绿色软件”,使用“绿色软件”。<br/><br/>&nbsp; 纵观当今计算机硬件,你不难发现最便宜的东西非硬盘莫属。想起我当年卖计算机时4GB的硬盘大概是1400元。可是今非昔比,1400元卖个30GB的硬盘甚至更大的也不是什么大问题,哎!回想起硬盘的发展史我们不难发现这个过程也是软件的膨胀史。从原来Windows3.2的数十兆,到现在Windows2000的650MB,甚至要吞掉我1GB的硬盘。算算我就4GB硬盘减去650MB装Windows2000,500MB装Office2000,150MB做虚拟硬盘,200MB做备份,100MB装photoshop5.5和Flash4.0及VB6.0。这样一来我的1.6GB硬盘就没了,格式化以后还剩3.8GB,等于最后我还剩下2.2GB的硬盘。就现在而言2.2GB能干什么呢?一个游戏《笑傲江湖》需要1.2GB左右的空间进行安装。看VCD听音乐需要《超级解霸2000》,这也需要50MB!留几首MP3也是百兆左右。装这个软件那个软件不一会儿三四百兆的空间就没了。照这个趋势下去15GB左右的硬盘被吃掉就在不远的明天。这是科技发展使得我们的硬盘越来越大,还是硬件厂商和软件厂商串通好了共同骗咱们老百姓的钱?! 使得咱们这些穷老百姓不得一次又一次勒紧裤腰带去寻求更快更快的CPU、更大的内存和硬盘。不过从另一个侧面我们也不难看出软件是硬件的推助器(黑暗呀!)不过这也是科技发展的必然,也可以理解为软件是计算机领域科技和经济发展的动力。<br/><br/>&nbsp; 不过说这么多,我们还是非常有必要谈谈现在各类软件是否需要做得这么大吗?现在的软件有必要都安装吗?甚至把所有的文件都拷贝到硬盘上再使用吗?现在的软件都有必要在注册表中写入许多信息吗?就拿SONY公司的著名游戏机PS上的游戏软件来说,没有一个需要安装的。但是运行效果都是有目共睹的,只不过间隙读盘时间稍长。现在我们用的光驱普遍都在24速以上,主流光驱都在44速左右足以弥补这个缺陷,更何况现在电脑游戏在设计时读盘速度也很慢,即使把所有的文件都装在硬盘上(如:《烈火文明》)。再看看PS,都相当于一个P166MMX配上一块voodoo外加16MB内存ISA声卡。而现在我们使用的计算机最慢也是PII,大多数人都是主频超过500Mhz的PIII赛扬或K7,配上64MB内存甚至128MB内存,一块16~32MB的3D加速卡、一块PCI声卡。但在这么高的配置下面,我们还是需要300MB以上的硬盘来安装文件。我们不禁要问有必要吗?像《古墓丽影》在安装运行程序和图标进度文件不到2MB运行的效果不是也很好吗?但一些2D游戏或是其它不是非要把文件拷到硬盘的软件干嘛要占据我们那么多的硬盘(抗议,打倒法西斯!)<br/><br/>&nbsp; 再让我们看看现在体形庞大的软件都给我们提供了一些什么东西,如在word中庞大的数据让我们来处理宏(宏病毒?)。我不禁要问了有多少人会用宏编辑器,有多少人需要宏编辑器?!为什么我们在安装使用时非要我们强制安装?!在安装各类软件时我们总需要安装这样或那样的格式转换器,(每个厂家都有每个厂家的软件标准,每个软件都有自己的格式)。这样一来使我们使用时既浪费时间资源,又无形中浪费我们的空间,给我们带来了诸多的不便,各类形形色色的扩展名也的的确确难倒众多的“小鸟们”。令他们困惑,使他们不解。各个厂家为了保护自己的产品,提出各种各样的标准,给计算机平民化的今天涂上了一层无形的障碍,我们不禁又要问,这未免太自私了吧?众多格式的推出也使得我们计算机越来越不稳定,众多软件的互相斗争,使得我们的计算机不堪重负,最终当机,损失了我们的时间、数据和金钱呀!<br/><br/>&nbsp; 我认为现在呼吁“绿色软件”不光要呼吁它的使用平民化、安装简易化,我认为还要符合中国的国情,做到价格大众化。一套Windows98正版软件要千元,一套Office2000软件需要2000元,而其中我们只能使用全部功能的10%到20%,也就是说享受了200元到400元,其余浪费。更不用说一些专业软件了,虽然(商家立场)这些软件制作成本很高,但是(用户立场)像最近炒得很热的软件Linux和成千上万共享软件、免费软件来看他们不乏精品(像Foxmail、Natants、Winamp、文杰等)而他们却存在平易近人的价格和独具匠心的功能且他们小而精,不用吞掉我们上百兆的硬盘。广大计算机迷们可能是经常到D版(D=盗)市场溜达一圈我们不难发现在D版市场很热销的软件往往都是价格很高的软件,这样一来没人会再去理会知识产权使得本来是制作商开发商和正规批发销售人员双赢的局面变成了盗版商和用户双赢的局面。其实我们用户又何尝不想和正规厂家双赢呢?只可惜……哎!不过现在中国的众多厂商已经懂得价格对消费的直接影响,使我们获得了一批做工优秀、性价比极高的软件,厂商自身也火了一把(如:金山公司在前一段时间搞的红色风暴活动使众多消费者实惠了一会,看看我们手中的软件像《金山词霸2000》、《金山快译2000》之类的软件一定是正版的),呼吁那些大公司研发的软件,不要带着一股大国沙文主义的色彩,要懂得本地平民化的重要性。<br/><br/>&nbsp; 开发和使用绿色软件是众望所归,需要我们的开发人员加强责任心,使用者多为软件提出中肯的意见。使用平民化、安装简易化、价格大众化只是我们开发“绿色软件”的第一步,但走出这步也确实不易,前途上充满了坎坷,经济利益的驱使,确实使我们很难迈这一步,但我们深信等到雨过天晴后再回首路途的泥泞憧憬前程的光明,这一小步又算得了什么?总之,“绿色软件”的开发,势在必行!</font></span><br/>
发表于 2007-1-19 07:26:02 | 显示全部楼层
<p>......看不懂的东西,不过LZ还是辛苦啦!!!</p>[em01]
 楼主| 发表于 2007-1-20 03:47:46 | 显示全部楼层
<p><u><font color="#0000ff">看不懂的东西,不过可以慢慢学习学习。</font></u><a href="http://hyhp.com/i"></a></p>
发表于 2007-4-21 06:20:42 | 显示全部楼层
顶一下楼猪好样的
您需要登录后才可以回帖 登录 | 注 册

本版积分规则

站点统计|小黑屋|手机版|Archiver|和平家园 ( 粤ICP备13078947号-1 )

GMT+8, 2024-11-23 19:37 , Processed in 0.016759 second(s), 12 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表