夜里不想睡,研究了一下windows系统下软件安装的原理。
最基本的,安装一个软件会把需要的文件拷贝到目的地址。如果只做这一步,软件就可以使用,那么这个软件可以称得上是纯绿软件了。这一步是任何软件安装都要进行的一步。
有的软件安装时,还会把一些dll拷贝到系统目录中,这么做的原因我想是因为会有别的程序共享这些dll。不然的话,只需要把dll和软件的执行文件放在同一个目录里,执行文件就可以访问到dll。至少对于函数库的dll是如此,对于com是不是这样我不清楚。说到这里,让我想起有些软件安装时还需要注册一些dll,至于为什么要注册,我只知道函数库类型的dll不需要注册,而com需要注册,不然系统就不能访问。为什么com要注册才能访问呢?这个,因为我对com不是很懂,所以也不能乱说。其实,系统里注册的dll多了,系统就会变慢,所以应该把那些不再需要的dll反注册掉。那怎么知道哪些dll是没用的呢,可以在注册表里看到共享的dll被几个程序使用。windows优化大师中清理冗余dll就是用的这个原理。
另外,很多软件安装时都会向注册表写入一些值。这大概是用户的一些设置,注册信息等。
最后,软件安装完成之前,为了方便用户访问软件,安装程序还会在开始菜单中放入程序组,在桌面放置快捷方式,当然,一般这是可选的。
还有一个问题,就是有的软件在安装时都需要重启。个中的原因,简而言之就是安装过程中要替换系统正在使用的文件。重启之前,windows把新的文件先改成别的名字,以便和旧文件共存。重启之后,windows根据纪录的信息用新文件替换掉旧文件。有的软件卸载时还需要重启,是因为卸载过程要删除系统正在使用的文件。
其实,我很希望所有软件都以压缩包的方式发行,就像很多网友做的绿色免安装版,用批处理来完成拷贝一些文件到系统目录和写入注册表值的任务。这样的好处就是,系统重装之后,不用像重装软件那样重新复制文件到目的地址,只需要点几下鼠标,软件就又可以用了。减少写磁盘的次数,也减少磁盘碎片,不是很好吗?
1:06 2007-5-30