软件安装原理_第1页
软件安装原理_第2页
软件安装原理_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件安装原理.txt这是一个禁忌相继崩溃的时代,没人拦得着你,只有你自己拦着自己,你 的禁忌越多成就就越少。自卑有多种档次,最高档次的自卑表现为吹嘘自己干什么都是天才。 软件在安装时,到底做了些什么?大家每天都在用电脑,可能也经常在自己的电脑上安装软 件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件, 而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装, 直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问 题。首先,我们探讨一下软件安装的共通部分,说共通,就是在不同版本的操作系统上,如 WINDOWS98

2、, WIN2K和WINXP等上它们都有共同点的地方。这个文章也试图不针对具体的某个 操作系统,而对共同的规律来探讨,不过我自己用的是WINDOWS98,所以有时一些例子可能 会用WINDOWS98上的实例来说明,而大多数情况下这些特*在WIN2K和WINXP上也是类似的。那么,我先来归纳一下,典型的软件安装过程都有可能做哪些事情。由于我们是讨论软件在 安装时的行为,所以开始安装前的设置和选项我们就暂不讨论,只说到软件真正开始安装那 个时候起的动作:文件从安装源位置拷贝到目标位置。往系统目录写入一些必要的动态连接库(DLL)。(可选)往系统注册表中写入相应的设置项。(可选)建立开始菜单里的程序组

3、和桌面快捷方式。(可选)其他动作。(可选)下面我们再详细来分析上面归纳出来的这些动作:1)拷贝软件本身需要的文件。源位置指软件未安装之前的位置,例如光盘,下载的目录等, 目标位置指你指定的安装位置。这是几乎所有的软件安装过程一定会做的一件事。而如果一个软件,在安装时只要这一步, 不需要后面的其他几步,我们可以认为这个软件就是绿色软件。或者反过来说绿色软件就是 只要拷贝文件,不需要依赖于某个DLL,或者它依赖的DLL在几乎所有的系统中都一定有的, 并且它也不依赖于注册表里面的设置项的软件。2)这一步,可以说至少有一半软件在安装时都会做,一些软件,需要用到某个DLL,特别是 那些软件作者开发的DL

4、L,或者系统中不常用的DLL,一般都会随软件的安装拷到系统目录。 所谓系统目录,在WIN98下一般是在WINDOWSSYSTEM这个目录,而WIN2K是在 WINNTSYSTEM32, WINXP是在WINDOWSSYSTEM32。还有,一些软件如QQ游戏,中游等,它们 也用到一些DLL,由于这些DLL只是这个软件自己用到,别的其他软件不会用到,所以它们 并不一定存在于系统目录,而是放在软件安装目录里面,这样的DLL已经在上一步中被拷贝, 所以和这一步说的情况不一样。3)这一步同样至少有一半软件会做,一般在安装前用户的设置和一些选项,在安装时就会把 这些设置写到注册表里。另外就是有时在上一步把

5、DLL拷贝到系统目录时,一些DLL需要向 系统注册,这些DLL的注册信息也会写在注册表里。还有,一些软件有时可能安装时并不写 注册表,而是在第一次运行时才把一些设置写到注册表。也有把设置写进INI文件的4)这个非常简单,大概不需要怎么解释。建立这些快捷方式一方面是便于用户执行,另外在 时也会把卸载的快捷方式放在程序组里。关于卸载后面我们再来讨论。5)这个就是除了上面说的以外的其他情况。例如有些软件安装时会先把所有文件(或一部分文 件)先解压到临时目录,那么安装完之后就要把这些文件删除掉。那么我们再总结一下:一、一个典型的软件在安装过程一般都会执行上面的1-4项。这样可以认为是一个完整的安 装过

6、程。二、除了第1项之外,其他的都不是必要的。只需要第一项的软件,我们可以把它叫做绿色 软件。三、有些软件安装时是执行了 1、2、4,有些软件是执行了 1、3、4,有些软件是执行了 1、 4。四、一个特殊的情况,一般的驱动程序,只会执行2和3,没有1和4。五、理论上,任何软件,如果你非常确切地知道了它在上面的那几步都具体做了些什么,特 别是2和3,那么,理论上你可以把这个软件的安装文件拷贝到另一台机子,把必要的DLL 从系统目录拷贝到那一台机子的系统目录,再把注册表里软件写入的项目导出来(必要时还要 修改一下)再导入到那台机子的注册表中,那么,就算不是绿色软件,你也能这样把它移植给 另一台机。但

7、有时特别是一些共享软件,一般都会有注册表中设置比较隐蔽的项目,不容易 查找,所以除非你对系统非常熟悉,否则不是绿色软件的软件要移植还是有一定的难度的。那么,下面我们再来看看,为什么一些软件安装后要重启。在WINDOWS操作系统上,一般一个正在运行中的程序,操作系统是不让你修改它的,修改包 括替换,改动和删除。那么有时,一些软件需要向系统目录中写入一个DLL,而系统目录中 原来已经有同名的DLL并且这个DLL目前正在被系统使用,因此不能用新版本去替换它,这 个时候就需要重启,在重启的过程中,在这个DLL旧的版本被使用之前用新版本替换它。这 就是为什么要重启的原因。你能看到这里,说明你很有耐心,并

8、且对技术的探讨很有兴趣,那么我就再说得更详细些。 在WIN98中,上面说的这个替换是由系统的一个工具来实现的,这个工具叫WININIT.EXE。 安装程序在检测到需要写入的DLL或其他程序文件正在使用时,会把要写入的DLL文件先定 一个临时的文件名,然后在WINDOWS目录中往WININIT.INI写入一个改写项,比如,一个叫 ABCD.DLL的动态连接库现在正在使用中,而安装程序要往系统中写入新版本的ABCD.DLL,这 时安装程序会把新版本ABCD.DLL先定一个临时文件名,例如AAAA.LLL,然后在WININIT.INI 中的rename 一节中写入这一项:?筛l律料发C:window

9、ssystemabcd.dll=C:windowssystemaaaa.lll CX = B )这样,在重启时,进入WINDOWS图形界面之前,WININIT.EXE在检测到WINDOWS目录中有 WININIT.INI存在时,就执行里面的操作,在上面的例子中,是用 C:windowssystemaaaa.lll 去替换掉 C:windowssystemabcd.dll 这个文件,并且把 WININIT.INI 改名为 WININIT.BAKo另外,有些软件,在安装时,是把所有文件包括SETUP.EXE解压到临时文件里面再执行SETUP.EXE进行安装的,按理来说安装完要把所有的临时文件删除掉

10、,这个操作当然也是由 安装程序SETUP.EXE来完成,但它自己正在运行,也删不了它自己,所以也要重启来删除, 做法和上面差不多,只是改成类似这样子的:怦S?vH烨? NUL=C:WINDOWSTEMPSETUP.EXE 在WIN2K和WINXP中,存在类似的机制,不过并不是用WININIT.EXE和WININIT.INI来实现, 具体的做法我也不是很清楚,长期以来我大多数时候都是在用WIN98,所以没认真研究过, 但软件安装过程要重启的现象在2K和XP上是仍然存在的,原理也是在重启时替换或修改正 在使用的文件,只是实现的方式不同。最后,我们再来看看有关卸载方面的内容。一般卸载有好几种方式:1)早期的安装程序,一般会在安装过程记录了上面说的安装过程的1234四个步骤中具体拷贝 的文件和DLL以及注册表项,把它保存在INSTALL.LOG之类的文件中,再在软件的安装目录(或 WINDOWS目录中)放一个UNINST.EXE之类的卸载程序。然后要么在程序组里为这个UNINST.EXE 建一个快捷方式,要么在注册表中为这个UNINST.EXE建一个快捷方式(这诳U泼姘宓奶砑由 境 绦蚓湍芸吹饺砑男对叵?,并把INSTALL.LOG做为它的参数,这样就实现卸载了。2)现在比较多的安装程序是用新版的INSTALLSHIELD生成的,安装时的记

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论