有些消息让我们听了不知是好是坏:PhotoShop增强了图片浏览功能,ACDSee试图做大图像处理,Arobat却要做文字服务的标准。越来越多的软件走上了集成化、大型化的道路。但是,这些巨兽级软件的某些功能可能是我们一辈子都用不到的,我们需要的不是一个大而全的软件,我们需要的是小而精。因此,越来越多的人加入了做精简软件的行列,越来越多经典软件被人精简:大到操作系统、Office,小到ACDSee。是不是觉得软件精简很神秘?本期策划为你揭开这冰山一角。
原理篇
为什么一个软件能被精简呢?道理也简单,因为软件包含有功能,如附带的教程、模板、实例等,甚至还有许多华而不实的东西,比如一些捆绑性质的软件或可有可无的功能,由于我们需要的仅仅是用得着的那部分功能,没必要为其他东东浪费系统资源,因此,我们完全可以根据自己的需要进行软件的功能取舍。当然,精简软件并不简单地等于删除,简单的删除虽然可达到软件体积上的减小,但如何保证一个软件精简了还能正常使用,这才是软件精简最为重要的。
一、文件精简
文件精简最直观地就是能让软件的体积减小。但是,由于它所涉及的方方面面很多,所以调试将是精简软件的最大工作。除开以下四种主要类型外,其他的类型需视具体情况具体分析。
1.普通文件
首先,我们需要知道安装一个软件后都在系统中产生了哪些文件。你或许会问,不就是安装目录下的那些文件么?呵呵,事实上不是的。一个软件,尤其是大型软件,可不仅仅把文件写入安装目录里那么简单,在诸如windows、system32和font等目录里,它也会写入文件。当然,这和Windows的运行机理有关,不是我们讨论的重点,但我们要知道如何找到它们。
找到这些文件后,就可以将“没有用”(注:“没有用”不是一个绝对的概念,每个人有着不同的理解)的文件除去,所以在精简之前我们就要有明确目的,清楚自己需要哪部分功能,只把需要的功能和软件核心部分留着,其它部分一律Kill。
2.DLL文件
软件的模块化设计使许多软件的exe执行文件仅仅是一个框架,在运行时需要调用相应的DLL(Dynamic Link Library)动态链接库文件实现相应的功能。很多软件在安装时都会自己的DLL文件写入到系统中(有些DLL会替换同名的系统文件,从而给系统的不稳定埋下隐患),一般软件都不会恶意地隐藏自己的dll库,并且从文件位置到命名上都会给予我们很大方便的。尽管对于DLL文件的精简比较麻烦,但了解了dll命名规则并借助一些工具分析,我们还是能够了解一个可执行文件实现某种功能时调用了哪些DLL文件的。但是,对于DLL文件的精简依旧比较麻烦,我们需要了解一个可执行文件都调用了哪些DLL文件,然后对于那些鸡肋般的功能所对应的DLL文件就可以删除。典型的如Office2000,它的绝大部分功能都是由以下5个文件完成:winword.exe、mso9.DLL、ww9intl.DLL、Mso9intl.DLL、Mso.acl(自动更正所需的),剩下的文件就是用于让Word打开EXCEL文件,支持WEB发布等等。事实上,用Word无非就是打打字,制作特殊格式的文档而已,真正用到支持WEB发布这些功能,则会发现它远不如专业软件强大。
借助工具软件可分析到一个可执行文件都调用了哪些DLL文件,但是有些常识还是非常有必要事先知道的。比如user32.DLL、kernel.DLL和gdi32.DLL都是系统的基础库,这些文件得到系统目录中找,到时候别为找这些东东而忙晕了头哟。
3.配制文件
Config等配置文件虽然只是保存文件信息,但绝大部分软件向这些文件写入信息时如果找不到相应的文件则会自动建立,为了精简,我们有必要把这些文件删除。
4.插件文件
Plug-in(插件)这类文件要看实际需要进行取舍。
www.duowen123.com 二、注册表精简
www.duowen123.com 三、后期加工
www.duowen123.com
工具篇
在实际操作的流程中有相应的阶段,并且各个阶段会牵涉到一些软件。下面笔者结合精简流程谈谈要用到的软件。
一、文件监视工具
精简的基础是从得到安装文件所建立的注册表和文件,所以安装文件监视工具是必须的。在打开监视工具后,再安装要精简的软件,文件和注册表的改动就会被捕获到。笔者通常在这方面使用的是InstallRite。
InstallRite软件可以进行文件监控(图1),第一项“检查新的软件并创建一个安装包”用来监视所安装程序在系统中写入了哪些文件。
第二项是查看软件安装完成后都更改了哪些项目(图2)。左边栏里是所有监视过的项目,程序会自动把各种改动分类,便于我们直观地掌握各部分的改动。从“Microsoft office 2000 premium”中“添加的文件”选项下,可以看得出Office软件不仅仅在安装目录中写入了文件,而且在系统中很多地方都建立了文件,像“common files”文件夹、“system32”文件夹等,甚至在“Windows”文件夹里也有,此外还添加了字库文件等。在每个文件夹中,右边的栏目有详细文件列表,双击则会得到详细的信息;在“注册表”项下,软件会自动按照注册表的分类方式将安装程序在注册表中的改动分类。在左侧相应的注册表项目上点击右键,选择“输出改动的注册表”,对注册表的分析就变成对这些值的分析了;INI文件由于地位特殊而单独列出。
同样,在wise instllation system(简称wise instllation)软件的新建项目中也可选择捕捉安装信息(图3),这个功能与installrite的监视功能相当,但是后者监视能力不如前者,只适合监视一些不太复杂的软件。不过,wise instllation会把安装完成后的项目自动打包分类,可以简化不少工作量,然而正因为是自动精简,所以这项功能不是很强,不推荐大家使用。类似的还有一个软件total uninstall,作为反安装的软件,它也提供了不错的监视功能。
www.duowen123.com 二、注册表监视工具
www.duowen123.com 三、DLL文件监视工具
www.duowen123.com 四、调试工具
www.duowen123.com
五、资源修改工具
前面曾经讲到,精简软件后会出现一些功能损失,所以有必要对这些损失显示做一下修复。修复会用到Exescope和resource hack等汉化工具进行资源更改,比如删除某个窗口的显示和某个菜单下的命令等。
譬如已经把一个软件的“help”帮助部分精简掉了,当再点击“help”时就会弹出警告框,说找不到xx文件,这当然不是我们想看到的结果,所以必须把这部分没用的功能去掉。用“exescope”打开该功能的调用程序文件(一般为该软件的主程序exe文件),将其无用的功能部分删除或者处理为灰色(图10)。
六、打包工具
经典的软件都有着一个良好的软件安装界面,所以精简后的文件还得制作成安装程序,包括如何写入注册表信息等。wise instllation是优秀打包程序之一,《软件指南》过刊曾讲过它,这里不再赘述。
www.duowen123.com
注:之所以把“调试篇”放到“工具篇”后,是因为在“调试篇”中会涉及到“工具篇”中介绍到的一些软件。
调试是做精简软件的精髓,也是整个精简过程中最关键、最难做和最考耐心的一步。
实际操作过程中,分析文件调用时可以尝试删除或者添加一些文件,然后测试能不能正常运行。方法虽然简单,但调试过程比较麻烦。最好借助上一步提到的分析软件。这有点类似“英国式”拍卖法和“荷兰式”拍卖法。逐个文件删除,直至不能运行,算是 “荷兰式”,适合精简那些小一点的软件;先删除全部文件,然后逐个文件地添加,算是“英国式”,适合大一点的软件。具体怎么用视情况而定。像Office这种命名规范的软件我们可以用“英国式”。
一、文件调试
文件的精简要先从文件夹开始,先把一些可有可无的文件夹删除,然后是一些简单的文档文件,最后是DLL文件。DLL文件的精简最好可以借助一些工具软件,比如DLLshow之类的软件。
在更多时候这些精简是没什么道理可言,只能利用删除/添加文件这个简单有效的方法来解决问题。同样,每删除一个文件就要运行一次程序,以确保程序可以正常运行。如此这般,确定删除的文件对该程序的确没有用。推荐方案是:利用winrar对要精简的DLL或者其他文件做成一个压缩包,添加文件时只需要从文件夹直接拖拽到压缩包中就行了,用不着复制、粘贴么麻烦,同样在删除文件时也不用担心是否做了备份。这样可大大提高效率,也降低了误操作的危害。
www.duowen123.com
三、打包
1.打开wise instllation,新建一个工程,并填入相关产品的信息。默认安装目录填入PhotoShop,这样最终默认安装目录为c:\program files\photoshp\。
2.找到精简的PhotoShop文件夹,进入plug-ins文件夹中,如果文件名含有“%”,则需要将文件名中的“%”的去掉。
小提示:“%”是wise instllation的约定变量标志,不能出现文件名中。
3.点击主界面左上框中的文件夹选项,选中精简完的photoshop的目录(图24),左下框中选application文件夹,然后点击“添加目录”按钮。在弹出的通配符对话框中什么都不设置(图25),直接确定即可让文件分类存放。
4.详细查看添加的每一个文件的属性,如果图26所示的对话框中的“自注册ocx\dll\exe\tib(o)”前有小勾,请除去。否则会导致安装程序提示你缺文件。
5.点击左侧注册表选项。在下面点击“添加”,选择“从注册表导入”,然后选中前面那个能让PhotoShop运行的REG文件添加进去。
6.在右侧对话框选项,查看安装程序的对话框。补齐相关信息。如果可以的话。你可以对安装程序美化一下。
7.点击“保存”将工程保存。然后点击“编译”打包生成exe。我们的精简版PS7也就做好了。多大?18.6MB!比起原始安装文件200MB苗条多了吧!
PhotoShop的实例没有牵涉到变量等东西,并且没有保护机制,所以相对简单,但做精简版的大概思路就是这样了。如果你对这方面也有了兴趣,还是自己动动手吧。现在国内做这个的人还不是很多。或许一不小心,你就成了这方面的高手^_^。
,把软件瘦身计划进行到底