您现在的位置:多问网知识中心电脑教学软件技巧把软件瘦身计划进行到底

把软件瘦身计划进行到底

10-12 03:25:29   浏览次数:99626  栏目:软件技巧
标签:办公软件技巧,软件测试面试技巧,办公软件使用技巧,http://www.duowen123.com 把软件瘦身计划进行到底,

 有些消息让我们听了不知是好是坏: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 二、注册表精简
 删除了没有用的文件,还必须保证精简软件在别人机器上的各种系统中也能正常使用。众所周知,除绿色软件外,其他软件安装时都要在注册表中写入很多东西,比如文件类型注册、软件注册信息、卸载信息和安装路径等。Windows平台下,软件与系统的结合尤其紧密,大部分软件脱离了注册表后就无法运行。软件运行时需要从注册表里读取一些运行所需的信息,这些信息像一幅地图(路径信息)或者一把钥匙(注册信息),当软件找不到这些信息自然就无法工作下去,所以在精简软件时让软件具备这些注册表信息的添加功能是少不了的。
 和精简文件一样,精简注册表首先要找到软件在注册表中修改了哪些项目,并把这些改动的注册表值“抠”出来。当然,这也要借助一些软件分析,详细用法将在后面提到。“抠”出来的键值都是和这个软件不相干的或者是不重要的,像C:\Documents and Settings\“用户名”\My Documents\……这类项目对于使用者的注册表就是垃圾——不重要的项目添进去就违背了做精简版的目,我们要做的是尽可能减少垃圾信息。所以要对这些注册表项进行处理,找到运行软件所需的最基本、最关键的项并加以保留。
 有的软件需要运行所需的路径,像游戏general能不能正常运行就取决于注册表中[HKEY_LOCAL_MACHINE\SOFTWARE\General\EA games\]一个安装路径的值,软件按照这个路径读取运行所需的文件;有的需要注册信息,如PhotoShop7.0就需要注册表项[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\7.0\Registration]下的“serial”,这是序列号,没有它PhotoShop7.0就不干活;有些软件更麻烦,由于保护机制的存在,软件启动时会读取必须的文件或注册表项,当没有找到时会认为没有安装该软件或者安装错误,并提示我们修复。典型的就是Office系列,它的自动修复机制使得它不仅读取一些文件信息,还要读一些重要的键值,甚至连卸载键值也在它要求范围内,否则就警告我们没安装Office。想完美地完成第三类软件的精简版是很难的。
 取得了关键的注册表项目,基本上就可以让这个软件运行起来。但我们不能简单地把这些键值拷给别人使用,因为有些情况下要添加的注册表值是个变量,比如安装路径,在你机器上是“C:\Windows”,到别人机器上可能就是“D:\Windows”,简单的拷贝是没法使用的。所以得到注册表键值后,还要分析出关键项,还得对这些关键键项再加工。当然这部分工作也需要借助工具软件来完成。

www.duowen123.com 三、后期加工
 当我们把DLL文件精简了,把不需要的文件删除了,exe文件的某些功能菜单或按钮就没有用处了,但这个显示却还躺在软件界面里。当别人不小心点击该功能,弹不出相关对话框或显示不出效果是很让人扫兴的。所以我们还应该将这些无用的东东删除或者隐藏或者变灰,这就要用到像做汉化软件那样得修改资源了。
 做精简版软件,并不意味着只是删除,我们还可以添加一些东西。比如,用一篇出色的技巧文章来代替原有的看不懂的E文帮助文档就挺好的^_^。添加一些插件,或者用更高级软件替代某些功能弹出运行也是不错的选择。有些软件的图标风格可能还停留在Win98年代,我们可以让它变得更加漂亮。就功能扩展而言,像Office2000“打开文件”的对话框左侧图标没有“我的电脑”这项,这显然已不能适应我们现在的操作习惯了,所以就要把这部分功能加上去。最终的目的反正一句话,让软件更顺手。
 面对精简后的软件,如果还想省下更多空间,那就要用Aspack等加壳软件将exe、DLL给压缩一遍,或者可以想想怎么把几个文件捆绑到一起。

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 二、注册表监视工具
 所谓术业有专攻,有一些软件是专做某一方面监视的,虽然不能监视所有的改动,但在某一方面的功能绝对很强大。比如注册表的监视,由于需要详细地列出每一项的改动并对这些改动进行分析,这时候专业的注册表监视软件可能就要比“installrite”这类兼职要好很多了。比较好用的注册表监视软件有“regmon”和“regshot”等,值得一提的是Active Registry Monitor,它在监视注册表的过程中,只监视[HKEY_LOCAL_MACHINE]和[HKEY_USERS]这两个常用主键。
小知识:为什么只监视这两个主键呢?
 虽然注册表的主键一共有五项,但在安装软件时真正用到的只有这两项。[HKEY_CLASSES_ROOT]和[HKEY_LOCAL_MACHINE\SOFTWARE\Classes]是一模一样的,捕捉了[HKEY_LOCAL_MACHINE\SOFTWARE\Classes]下的键值就相当于捕捉了[HKEY_CLASSES_ROOT];[HKEY_USERS]是通用用户配置,它包含了[HKEY_CURRENT_USER]相关内容,所以[HKEY_CURRENT_USER]中的键值也不用捕捉;[HKEY_CURRENT_CONFIG]存储的都是硬件信息,安装软件一般都不动这项(但某些软件,如虚拟光驱可能用的到该项)。这样一来,就可以得到较少的改动,也减少了出现错误的可能性,从而更有利于我们对注册表的修改。
        Active Registry Monitor软件是通过给注册表建立快照的形式判断被修改的键值的。安装要精简的程序之前,先运行Active Registry Monitor,它会在运行时扫描注册表,并把扫描的结果保存为一份文件。然后再安装打算要精简的程序,安装完毕后回到Active Registry Monitor主窗口,点击(图标1)按钮,重新对注册表进行扫描。扫描完成后点击(图标2)按钮,将两次扫描的结果进行对比,即可得到安装程序所修改的建值(图4)
 Active Registry Monitor还有一个重要的功能,就是可以将修改后的注册表键值还原。软件主界面上的(图标3)按钮就是用来撤消和恢复注册表改动的,这有点儿类似平常所用的撤消和恢复功能。这两个功能非常实用,我们可以用它们来调试截取的注册表项目是不是最精简。不过,当你试图恢复到改动以前的键值时,程序有时候会提示某些键值不可恢复,如果强行恢复,做出来的东西很有可能有问题(如缺少键值),导致精简软件无法在他人计算机上运行。
 通过监视软件得到改动的注册表文件后,可以先用Regeditr分析整个结构,然后按经验分析出一些关键项目。有时候还需要借助与Filemon的帮助,最后还可用EmEditor处理。Regeditr是一个很容易上手的工具,它和注册表编辑器很像(图5)。事实上,作者的意图正是这样:让大家继承了对注册表的树形认知来编辑注册表文件,这样则更方便和直观。该软件可以将重复的项过滤掉。建议选择稳定的1.1版本,因为其最新版本2.1有个bug:如果我们用它来删除注册表项,当注册表的深度超过3层时,软件就会发生错误而退出。“抠”出来的REG文件有的时候会很大,而记事本有64k限制,并且精简过程中要频繁地查找替换或者撤销恢复,所以有必要用EmEditor替换记事本。当EmEditor打开注册表的文件时(图6),其语法突出显示功能会把注册表的键值和项用颜色区分开,方便我们查看。Filemon可作辅助分析,它监控每一个对文件或注册表的读写,可以单独查看某个软件对注册表的读取。此外, 注册表精简还常常用到Regorgnizer软件。

www.duowen123.com 三、DLL文件监视工具
 DLLshow是一个强大的动态DLL调用分析软件。软件分为上下两个窗口,上面的窗口列出了系统当前运行的exe文件,下面的窗口列出了该exe调用的DLL文件。以QQ.exe文件为例,在下面的窗口列出了QQ.exe调用的DLL文件,可以看出QQ.exe不仅调用了软件自带的DLL文件,而且还用了系统的DLL文件来实现某些功能。其中画圈的部分是QQ自带的DLL文件的路径和名字(图7)。
 Dependency Walker则是静态分析软件(图8)。它以树形的结构列出一个文件所调用的DLL文件。这里我们可以看到像gdi32.DLL、shell32.DLL、user32.DLL等通用的DLL库,这些都是系统自带的而不是安装程序添加的。由于每个Windows操作系统本来就有,所以我们在做精简版时不需要去找出它们并放到安装程序中。
    小知识:动态分析是对已运行的exe文件进行分析,从而得出该文件所调用的DLL文件,动态分析要求被分析的程序必须已运行。静态分析是通过对文件代码进行分析,得出该文件所调用的DLL文件,静态分析不需要被分析的软件运行,但效果明显不如动态分析。

www.duowen123.com 四、调试工具
由于Windows 9x和Windows NT的核心技术不同,为了使做出来的软件可以同时在不同核心技术的系统上正常运行,通常需要在这两个平台上做精简,然后把在这两个平台上做的软件合到一起去。这个过程中,我们很有可能用到虚拟机作调试平台。用虚拟机装不同系统,然后在虚拟机下做调试。
 另外,有时我们是无法通过调试软件撤消某些键值的改动。为了保证作品的正确性,还必须把这些键值改回以前的值,这个过程也需要通过虚拟机来完成。比较有名的虚拟机有“vmware”和“VisualPC”,关于它们的使用可以参见《软件指南精华本》。笔者在这里着重讲一下虚拟机的恢复功能。vmware有快照功能,当保存一个快照后,使用“恢复到快照”的功能,可以撤销虚拟机上任何在快照之后的操作,这部分功能在界面上很容易找到。VisualPC也有个相同的功能,只不过稍微隐蔽了点,当建立一个虚拟系统的时候,选中该虚拟系统的属性(图9),选“允许还原驱动器”。以后每次关闭该虚拟系统时将撤销所有的改动,这就相当于vmware的快照功能了。

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的实例没有牵涉到变量等东西,并且没有保护机制,所以相对简单,但做精简版的大概思路就是这样了。如果你对这方面也有了兴趣,还是自己动动手吧。现在国内做这个的人还不是很多。或许一不小心,你就成了这方面的高手^_^。

,把软件瘦身计划进行到底
相关热词搜索: tag: 软件技巧,办公软件技巧,软件测试面试技巧,办公软件使用技巧,电脑教学 - 软件技巧
上一篇:雨浪飘零系统维护光盘上手指南
《把软件瘦身计划进行到底》相关文章
文章评论
联系我们 | 网站地图 | 范文大全 | 管理资料 | 驾照考试 | 教学资料 | 名言大全 | 软件下载
Copyright @ 多问网 all rights reserved
学生评语_教案设计_小学语文试卷
1 2 3 4 5 6 7 8 9 10 11 12