论文部分内容阅读
在安装或者卸载软件后,常常会出现类似这样的提示:“为使新的设置生效必须重新启动计算机。是否现在重启?”单击“是”按钮系统将自动重启。安装的软件多了,这样的提示令人不胜其烦,可是不按提示重新启动的话,又会担心软件或系统会出故障。那么,每次出现这样的提示,我们都必须得重启么?分析一下软件安装过程中都做了什么,也许能找出答案。
Hi,大家好,我叫Alcohol 120%(下载地址:http://www.newhua.com/soft/3597.htm),就是你们每天从网上下载的各种后缀名为“.exe”的可执行文件中的一个,大家平时都称我们为“应用软件”。当然,有时开发我们的人为了大家下载方便,还会把我们压缩成ZIP或RAR文件,不过最终还是解压还原之后才能运行我们。今天小编请我来,就是想让我演示一下安装的过程。
下载后无需安装,直接双击就能运行的叫做绿色软件。不过我不是,我还只是软件的安装程序,必须先双击运行安装,之后才能真正使用上软件。安装过程,说白了就是文件解压和复制的过程,大部分安装向导会让你自己挑选安装位置(见图1)。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/dnah/dnah200707/dnah20070755-1-l.jpg)
图1
拷贝文件的过程中会发生一些分歧。大部分软件都开发有自己独特的功能,这些功能多以DLL动态链接库的形式出现,随安装程序包一起提供。有些软件很规矩,把这些DLL文件也放在自身安装的目录下,而另外有不少软件则把这些DLL文件拷贝到系统目录下,一般为“\Windows\System”(98系统)、“\Winnt\System32”(2000/2003系统)或“\Windows\System32”(XP系统)中。
把DLL文件放在自身目录中的好处是,重装系统后软件不用安装也能使用,比如我的兄弟Foxmail就是这么干的,重装系统后原来的Foxmail依然能使用(如果原程序被覆盖的话就另当别论了),这算得上是半绿色软件了。
重启解密1:DLL变更会重启
一些软件需要向系统目录中写入DLL文件,但如果系统目录中已经有同名的DLL文件并正被系统调用,则系统会拒绝写入。在Windows 98中,当安装程序检测到需要写入的DLL文件正在使用时,会把要写入的DLL文件临时改为别的文件名,然后在Wininit.ini加入一个改写项,并要求重新启动系统,重启后在进入Windows图形界面之前,Wininit.exe会检测Wininit.ini并执行里面的操作,这样就神不知鬼不觉地把旧版本的DLL文件替换掉了。Windows 2000/XP中替换文件的方法不同,但原理差不多。
文件拷贝完成后,新的分歧又来了。注册表是存放系统软、硬件信息的一个超级数据库,大部分应用软件自然不会放过这里,软件的设置参数等都会保存到注册表中。DLL文件也必须将注册信息写进注册表中才能正常使用。
不过也有例外,纯绿色软件就不写注册表信息。另外有一些软件比较有趣,依旧以我的兄弟Foxmail为例,它在安装时并不写注册表,但是启动后会检测相关的注册表项,如果检测不到的话就会重新写入一次。
重启解密2:注册表变更会重启
注册表的用法可以是动态也可以是静态的。就是说,某些注册表项是被一次读入并且直到系统重新启动才会再次读取;另一些注册表项,则是每次被引用的时候都会被读取一次。系统数据通常都是静态的,所以如果安装软件对系统相关的注册表项做了改动,必须重新启动才能使之生效。
好了,安装过程到这里,主要的工作差不多完成了,接下来要做的事情是建立程序组和桌面快捷方式。这一步本可以不做,但是为了用户启动程序方便,一般都会在开始菜单中建立程序组,或在桌面上建立程序运行的快捷方式。
还可能会有其他操作,比如有些程序安装时先把自己解压到临时目录中,等安装结束后就会做一些善后处理,将临时文件夹中的安装文件清除等。我的故事也就到此结束了。
上面的流程中,除了第一项是必须的外,其他都是可选的,具体要应用到哪些项目取决于软件开发者对软件部署的设计。有兴趣的朋友还可以去http://exodusdev.com/sites/default/files/WhyReboot-1.0.1.537.zip下载名为WhyReboot的小工具研究一下,它只有100KB大小,适用于Windows 2000/XP平台,在你安装软件后,通过它可以检测是否真的需要重新启动系统。
Hi,大家好,我叫Alcohol 120%(下载地址:http://www.newhua.com/soft/3597.htm),就是你们每天从网上下载的各种后缀名为“.exe”的可执行文件中的一个,大家平时都称我们为“应用软件”。当然,有时开发我们的人为了大家下载方便,还会把我们压缩成ZIP或RAR文件,不过最终还是解压还原之后才能运行我们。今天小编请我来,就是想让我演示一下安装的过程。
下载后无需安装,直接双击就能运行的叫做绿色软件。不过我不是,我还只是软件的安装程序,必须先双击运行安装,之后才能真正使用上软件。安装过程,说白了就是文件解压和复制的过程,大部分安装向导会让你自己挑选安装位置(见图1)。
![](https://www.soolun.com/img/pic.php?url=http://img.resource.qikan.cn/qkimages/dnah/dnah200707/dnah20070755-1-l.jpg)
图1
拷贝文件的过程中会发生一些分歧。大部分软件都开发有自己独特的功能,这些功能多以DLL动态链接库的形式出现,随安装程序包一起提供。有些软件很规矩,把这些DLL文件也放在自身安装的目录下,而另外有不少软件则把这些DLL文件拷贝到系统目录下,一般为“\Windows\System”(98系统)、“\Winnt\System32”(2000/2003系统)或“\Windows\System32”(XP系统)中。
把DLL文件放在自身目录中的好处是,重装系统后软件不用安装也能使用,比如我的兄弟Foxmail就是这么干的,重装系统后原来的Foxmail依然能使用(如果原程序被覆盖的话就另当别论了),这算得上是半绿色软件了。
重启解密1:DLL变更会重启
一些软件需要向系统目录中写入DLL文件,但如果系统目录中已经有同名的DLL文件并正被系统调用,则系统会拒绝写入。在Windows 98中,当安装程序检测到需要写入的DLL文件正在使用时,会把要写入的DLL文件临时改为别的文件名,然后在Wininit.ini加入一个改写项,并要求重新启动系统,重启后在进入Windows图形界面之前,Wininit.exe会检测Wininit.ini并执行里面的操作,这样就神不知鬼不觉地把旧版本的DLL文件替换掉了。Windows 2000/XP中替换文件的方法不同,但原理差不多。
文件拷贝完成后,新的分歧又来了。注册表是存放系统软、硬件信息的一个超级数据库,大部分应用软件自然不会放过这里,软件的设置参数等都会保存到注册表中。DLL文件也必须将注册信息写进注册表中才能正常使用。
不过也有例外,纯绿色软件就不写注册表信息。另外有一些软件比较有趣,依旧以我的兄弟Foxmail为例,它在安装时并不写注册表,但是启动后会检测相关的注册表项,如果检测不到的话就会重新写入一次。
重启解密2:注册表变更会重启
注册表的用法可以是动态也可以是静态的。就是说,某些注册表项是被一次读入并且直到系统重新启动才会再次读取;另一些注册表项,则是每次被引用的时候都会被读取一次。系统数据通常都是静态的,所以如果安装软件对系统相关的注册表项做了改动,必须重新启动才能使之生效。
好了,安装过程到这里,主要的工作差不多完成了,接下来要做的事情是建立程序组和桌面快捷方式。这一步本可以不做,但是为了用户启动程序方便,一般都会在开始菜单中建立程序组,或在桌面上建立程序运行的快捷方式。
还可能会有其他操作,比如有些程序安装时先把自己解压到临时目录中,等安装结束后就会做一些善后处理,将临时文件夹中的安装文件清除等。我的故事也就到此结束了。
上面的流程中,除了第一项是必须的外,其他都是可选的,具体要应用到哪些项目取决于软件开发者对软件部署的设计。有兴趣的朋友还可以去http://exodusdev.com/sites/default/files/WhyReboot-1.0.1.537.zip下载名为WhyReboot的小工具研究一下,它只有100KB大小,适用于Windows 2000/XP平台,在你安装软件后,通过它可以检测是否真的需要重新启动系统。