软件安装过程解析

zimbra安装过程出错集合 1、错误关键词packages,via ,apt-get ERROR: Unable to install required packages Fix the issues with remote package installation and rerun the installer 再次install Configuring package repository ERROR: Unable... 阅读详情


软件在安装时,到底做了些什么? 大家每天都在用电脑,可能也经常在自己的电脑上安装软件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装,直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问题。 

首先,我们探讨一下软件安装的共通部分,说共通,就是在不同版本的操作系统上,如WINDOWS98,WIN2K和WINXP等上它们都有共同点的地方。这个文章也试图不针对具体的某个操作系统,而对共同的规律来探讨,不过我自己用的是WINDOWS98,所以有时一些例子可能会用WINDOWS98上的实例来说明,而大多数情况下这些特***在WIN2K和WINXP上也是类似的。 

那么,我先来归纳一下,典型的软件安装过程都有可能做哪些事情。由于我们是讨论软件在安装时的行为,所以开始安装前的设置和选项我们就暂不讨论,只说到软件真正开始安装那个时候起的动作: 

①文件从安装源位置拷贝到目标位置。 

②往系统目录写入一些必要的动态连接库(DLL)。(可选) 

③往系统注册表中写入相应的设置项。(可选) 

④建立开始菜单里的程序组和桌面快捷方式。(可选) 

⑤其他动作。(可选) 

下面我们再详细来分析上面归纳出来的这些动作: 

1)拷贝软件本身需要的文件。源位置指软件未安装之前的位置,例如光盘,下载的目录等,目标位置指你指定的安装位置。

这是几乎所有的软件安装过程一定会做的一件事。而如果一个软件,在安装时只要这一步,不需要后面的其他几步,我们可以认为这个软件就是绿色软件。或者反过来说绿色软件就是只要拷贝文件,不需要依赖于某个DLL,或者它依赖的DLL在几乎所有的系统中都一定有的,并且它也不依赖于注册表里面的设置项的软件。 

2)这一步,可以说至少有一半软件在安装时都会做,一些软件,需要用到某个DLL,特别是那些软件作者开发的DLL,或者系统中不常用的DLL,一般都会随软件的安装拷到系统目录。所谓系统目录,在WIN98下一般是在WINDOWS\SYSTEM这个目录,而WIN2K是在WINNT\SYSTEM32,WINXP是在WINDOWS\SYSTEM32。还有,一些软件如QQ游戏,中游等,它们也用到一些DLL,由于这些DLL只是这个软件自己用到,别的其他软件不会用到,所以它们并不一定存在于系统目录,而是放在软件安装目录里面,这样的DLL已经在上一步中被拷贝,所以和这一步说的情况不一样。 

3)这一步同样至少有一半软件会做,一般在安装前用户的设置和一些选项,在安装时就会把这些设置写到注册表里。另外就是有时在上一步把DLL拷贝到系统目录时,一些DLL需要向系统注册,这些DLL的注册信息也会写在注册表里。还有,一些软件有时可能安装时并不写注册表,而是在第一次运行时才把一些设置写到注册表。 

4)这个非常简单,大概不需要怎么解释。建立这些快捷方式一方面是便于用户执行,另外在时也会把卸载的快捷方式放在程序组里。关于卸载后面我们再来讨论。 

5)这个就是除了上面说的以外的其他情况。例如有些软件安装时会先把所有文件(或一部分文件)先解压到临时目录,那么安装完之后就要把这些文件删除掉。 

那么我们再总结一下: 

一、一个典型的软件在安装过程一般都会执行上面的1-4项。这样可以认为是一个完整的安装过程。 

二、除了第1项之外,其他的都不是必要的。只需要第一项的软件,我们可以把它叫做绿色软件。 

三、有些软件安装时是执行了1、2、4,有些软件是执行了1、3、4,有些软件是执行了1、4。 

四、一个特殊的情况,一般的驱动程序,只会执行2和3,没有1和4。 

五、理论上,任何软件,如果你非常确切地知道了它在上面的那几步都具体做了些什么,特别是2和3,那么,理论上你可以把这个软件的安装文件拷贝到另一台机子,把必要的DLL从系统目录拷贝到那一台机子的系统目录,再把注册表里软件写入的项目导出来(必要时还要修改一下)再导入到那台机子的注册表中,那么,就算不是绿色软件,你也能这样把它移植给另一台机。但有时特别是一些共享软件,一般都会有注册表中设置比较隐蔽的项目,不容易查找,所以除非你对系统非常熟悉,否则不是绿色软件的软件要移植还是有一定的难度的。 

那么,下面我们再来看看,为什么一些软件安装后要重启。 

在WINDOWS操作系统上,一般一个正在运行中的程序,操作系统是不让你修改它的,修改包括替换,改动和删除。那么有时,一些软件需要向系统目录中写入一个DLL,而系统目录中原来已经有同名的DLL并且这个DLL目前正在被系统使用,因此不能用新版本去替换它,这个时候就需要重启,在重启的过程中,在这个DLL旧的版本被使用之前用新版本替换它。这就是为什么要重启的原因。 

你能看到这里,说明你很有耐心,并且对技术的探讨很有兴趣,那么我就再说得更详细些。在WIN98中,上面说的这个替换是由系统的一个工具来实现的,这个工具叫WININIT.EXE。安装程序在检测到需要写入的DLL或其他程序文件正在使用时,会把要写入的DLL文件先定一个临时的文件名,然后在WINDOWS目录中往WININIT.INI写入一个改写项,比如,一个叫ABCD.DLL的动态连接库现在正在使用中,而安装程序要往系统中写入新版本的ABCD.DLL,这时安装程序会把新版本ABCD.DLL先定一个临时文件名,例如AAAA.LLL,然后在WININIT.INI中的[rename]一节中写入这一项: 竘罉枓犮 
C:\windows\system\abcd.dll=C:\windows\system\aaaa.lll CX = B ) 
这样,在重启时,进入WINDOWS图形界面之前,WININIT.EXE在检测到WINDOWS目录中有WININIT.INI存在时,就执行里面的操作,在上面的例子中,是用C:\windows\system\aaaa.lll去替换掉C:\windows\system\abcd.dll这个文件,并且把WININIT.INI改名为WININIT.BAK。 

另外,有些软件,在安装时,是把所有文件包括SETUP.EXE解压到临时文件里面再执行SETUP.EXE进行安装的,按理来说安装完要把所有的临时文件删除掉,这个操作当然也是由安装程序SETUP.EXE来完成,但它自己正在运行,也删不了它自己,所以也要重启来删除,做法和上面差不多,只是改成类似这样子的: 怦S?vH烨? 
NUL=C:\WINDOWS\TEMP\SETUP.EXE 

在WIN2K和WINXP中,存在类似的机制,不过并不是用WININIT.EXE和WININIT.INI来实现,具体的做法我也不是很清楚,长期以来我大多数时候都是在用WIN98,所以没认真研究过,但软件安装过程要重启的现象在2K和XP上是仍然存在的,原理也是在重启时替换或修改正在使用的文件,只是实现的方式不同。 

最后,我们再来看看有关卸载方面的内容。一般卸载有好几种方式: 

1)早期的安装程序,一般会在安装过程记录了上面说的安装过程的1234四个步骤中具体拷贝的文件和DLL以及注册表项,把它保存在INSTALL.LOG之类的文件中,再在软件的安装目录(或WINDOWS目录中)放一个UNINST.EXE之类的卸载程序。然后要么在程序组里为这个UNINST.EXE建一个快捷方式,要么在注册表中为这个UNINST.EXE建一个快捷方式(这 诳刂泼姘宓奶砑由境 绦蚓湍芸吹饺砑 男对叵?,并把INSTALL.LOG做为它的参数,这样就实现卸载了。 

2)现在比较多的安装程序是用新版的INSTALLSHIELD生成的,安装时的记录和卸载程序一般是会放在C:\Program Files\InstallShield Installation Information这个文件夹(隐藏属***)里,同样也会在程序组和注册表中建立卸载项。 

另外,在卸载时,也会遇到文件(一般是DLL文件)正在使用的情况。所以有时卸载的时候也要重启,就是要在重启过程中删掉这些正在使用的DLL文件。
CAD安装出现进行安装准备过程中发生错误,请重试或与Autodesk支持部门联系报错的解决方案 阅读详情

相关推荐

BACnet学习——软件工具安装

工具善其事,必先利其器。学习BACnet之前我们应该把需要的工具安装上,包括Yabe,VTS和Wirshark。

八哥终结者的博客 2234

软件安装原理

软件在安装时,到底做了些什么? 大家每天都在用电脑,可能也经常在自己的电脑上安装软件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装,直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问题。 首先,我们探讨一下软件安装的共通部分,说共通,就是在不同版本的...

vay156630557的博客 2003

从配置文件加载顺序揭秘:为什么你的logback.xml读不到application.yml?

本文深入解析了Spring Boot中logback.xml无法读取application.yml配置的原因,揭示了Spring Boot配置加载机制与日志系统初始化的时序问题。通过对比logback.xml与logback-spring.xml的差异,提供了使用springProperty标签和系统属性传递等解决方案,帮助开发者有效解决日志配置问题。

weixin_29214335的博客 364

【Android应用开发】-(9)应用程序安装卸载原理

本文粗体部分来自网络上的一篇文章,已不知出处,知道的告知,在此谢谢原作者。引出安装卸载的原理之前,先实现一个简单的安装卸载应用程序的功能。文章是我之前写的一篇博客,这里就不在叙述,只补充几点: 1、由于代码中用到了PackageInstallObserver,PackageInstallObserver在Eclipse中是不能调用的,必须在Linux环境下编译好系统后才能编译此应用程序。 2、

秋风的博客 9389

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9915

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

(转载整理)程序安装流程及如何实现文件在系统后自动重启(windows)

<br />软件在安装时,到底做了些什么? 大家每天都在用电脑,可能也经常在自己的电脑上安装软件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装,直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问题。<br />    首先,我们探讨一下软件安装的共通部分,说共通,就是在不同版本的操作系统上,如WINDOWS98,WIN2K和WINXP等上它们都有共同点的地方。这个文章

supermanwg的专栏 2202

XGBoost调参新姿势:Bayesian优化实战指南(附完整代码)

本文详细介绍了如何使用Bayesian优化方法高效调优XGBoost模型参数。通过解析Bayesian优化核心原理和XGBoost关键参数,提供完整的实战代码示例,帮助读者掌握这一智能调参技术,显著提升模型性能。文章特别适合机器学习工程师和数据科学家阅读。

weixin_42536058的博客 366

操作系统软件安装的原理

这篇博客写得还挺不错的,通俗易懂,转发分享给大家了 软件安装原理 软件在安装时,到底做了些什么?大家每天都在用电脑,可能也经常在自己的电脑上安装软件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装,直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问题。 首先,我们探讨一下软件安装的共通部分,说共通,就是在不同版本的操作系统上,如WINDOWS98,WIN2K.

biao2488890051的博客 4053

把 ABAP 开发对象装进 XML 行李箱:SAPlink 安装、插件、升级与协作迁移全指南

SAPlink是一款用于在SAP NetWeaver系统间导入导出ABAP对象的工具,特别适合临时协作、系统孤岛等场景。它通过XML文件(Slinkee和Nugget两种格式)传输开发对象,支持插件扩展多种对象类型。安装时需注意版本兼容性、权限和激活流程,使用时要区分覆盖选项的风险。相比正式运输系统,SAPlink更适用于快速共享、原型交付等非生产场景,但需配合命名规范和协作策略确保可维护性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 154

Virtual Hard Disk version 2 (VHDX) 文件格式详解

VHDX 镜像格式详解 0. References windows github 1. Overview Microsoft 虚拟化产品中常用的映像格式是虚拟硬盘版本 2 (VHDX) 映像格式。该规范基于可用文档,并通过分析测试数据进行了增强。 VHDX 镜像格式种类 固定硬盘镜像 动态硬盘镜像 差异硬盘镜像 VHDX 镜像文件由以下元素构成: file (type) identifier 2x image headers 2x region tables log or metadata journ

圣三一 2696

MelonLoader安装过程中杀毒软件误报问题解析

MelonLoader作为Unity游戏模组加载器,在安装过程中经常会被杀毒软件标记为病毒或恶意软件。这种现象在安全软件领域被称为"误报"或"假阳性",即安全软件错误地将无害文件识别为威胁。 ## 技术原理分析 MelonLoader的工作原理决定了它容易被安全软件误判: 1. **动态生成DLL文件**:MelonLoader在安装和运行过程中会动态生成DLL文件,这种行为模式与某些恶意软...

gitblog_07189的博客 472

YOLO26改进 - C2PSA | C2PSA融合CPIASA跨范式交互与对齐自注意力机制 : 交互对齐机制,提升小目标与遮挡目标判别力 | ACM MM2025

本文介绍了跨范式表征与对齐Transformer(CPRAformer)及其核心的跨范式交互与对齐自注意力机制(CPIA - SA),并阐述了其在YOLO26中的结合应用。传统图像去雨模型特征提取局限大,CPIA - SA通过协同“空间 - 通道”与“全局 - 局部”范式解决该问题,由SPC - SA、SPR - SA和AAFM子模块构成,经双路提取、动态过滤、空间细化、对齐融合四步工作。我们将相关代码引入指定目录,在`ultralytics/nn/tasks.py`中注册,配置`yolo26 - C2PS

魔改工程师的博客 665

ScreenVivid项目安装过程中ESET杀毒软件误报问题解析

ScreenVivid项目安装过程中ESET杀毒软件误报问题解析 问题现象 用户在Windows系统上安装ScreenVivid最新版本时,在安装即将完成阶段遭遇了ESET杀毒软件的拦截。安装程序被识别为潜在威胁并被自动删除,导致安装过程中断。从截图显示的错误信息来看,ESET将ScreenVivid的安装程序标记为可疑类软件。 技术背景分析 这种情况属于典型的"误报"(Fal...

gitblog_07010的博客 475

Serial RapidIO Gen2 IP 说明(一)

概述 高速IO(RapidIO)互联架构,用来兼容当前最流行的集成通信处理器、主处理器、联网的数字信号处理器,是一种高性能、分组交换(报文交换)的互联技术。它解决了高性能嵌入式产业稳定性、高带宽以及系统内部更快的总线速率的需求。 高速IO(RapidIO)标准由三层定义:逻辑层、传输层、物理层。逻辑层定义了所有的协议内容和报文格式。这些是终端发起和完成一次传输所必需的信息。传输层提供了报文从一个端点传输到另外一个端点必要的路线信息。物理层则描述了设备级的端口声明,如报...

记录所学,分享知识,结识挚友 1497

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux下软件的一般安装__源码编译过程以及Linux安装目录解析

通常安装的软件都是一个源码包,需要对源码进行Linux下的编译才可以进行相关类库的使用,本人安装过OpenCV,gdal,mpi之类的软件。 1.解压缩,Linux下的压缩通常是.gz 使用命令 tar zxvf xxx.gz 对源码文件进行解压缩。 2.cd 进入解压后的源码文件,在当前目录下./configure,当不指定软件要安装的位置时默认安装到user/local/bin下。 3...

weixin_39519416的博客 519

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python命令安装软件_Python命令行参数解析工具 docopt 安装和应用过程详解

什么是 docopt?1、docopt 是一种 Python 编写的命令行执行脚本的交互语言。它是一种语言!它是一种语言!它是一种语言!2、使用这种语言可以在自己的脚本中,添加一些规则限制。这样脚本在执行的时候就必须按照这样格式来执行,同时,也可以很方便的编写一些帮助信息(其实很多软件在输入 -h 的时候显示信息 、例如 python -h ,会显示所有的 python 指令,并且页通过 doco...

weixin_39938312的博客 365

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

saber软件安装后怎么打开_关于 saber 仿真软件基本应用和案例的详细过程解析(上)...

* 本文是21Dianyuan 社区「第八期 DIY 实战经验• 原创技术分享赛」原创参赛作品,作者奋斗的牛头怪,感谢作者的辛苦付出。自从接触仿真以后,发现仿真软件这个工具确确实实能对工程师的设计工作起到很大的辅助作用,能减少走弯路的时间,也能降低研发成本。不过,如果仿真软件用不好也是会起到反作用。今天,我来分享一下自己的心得体会。本帖包含两个部分的内容:①Saber 软件的基本应用介绍②...

weixin_36423062的博客 1660

软件安装过程

软件安装的过程中都做了些什么 软件在安装时,到底做了些什么? 大家每天都在用电脑,可能也经常在自己的电脑上安装软件。就算自己没安装过,至少也看到人家安装过软件。在这里,我不是想教你怎么安装软件,而是想向你展示,软件在安装的过程中,到底都做了些什么动作?为什么有些软件要安装,直接拷贝过去却不能用?为什么一些软件安装或卸载之后要重启。下面要讨论的就是这些问题。 首先,我们探讨...

anyijiao4453的博客 226

装软件为何还要重启?软件安装过程全回放

安装软件的过程,其实就是文件解压和复制的过程。拷贝文件袋额过程中,大部分软件都开发自己独特的功能,这些功能多以DLL动态链接库的形式出现,随安装程序包一起提供。有的软件把这些DLL文件放在自身安装的目录下,另外不少软件则把这些DLL文件拷贝到系统目录下,一般为"\Windows\System"(98系统) "\Winnt\System32"(2000/2003系统)或"\Windows\...

bankelei6741的博客 202

Linux软件安装的三种方法

在Windows下安装一个软件很轻松,只要双击setup或者.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件并不那么轻松,因为我们不是在图形界面下,所以要学会如何在linux下安装一个软件软件的安装,类似在Windows上下载安装一个游戏一样,无非找到对应的可执行文件,直接双击就可以,然后在安装过程中,可能会考虑到将此服务安装到哪个目录之下,当然也会有各种配置文件,只不过平时我们没有注意过这些,其实Linux系统也一样,但稍微比Windows要复杂一些。在红帽一派的系统中,安装方

3369的博客 2719

10、软件安装

一、常见的软件安装方式 以软件包的方式安装 在线方式安装 以源代码的方式安装 二、以软件包的方式安装 软件包是指软件提供方已经将软件程序编译好,并且将所有相关文件打包后所形成的一个安装文件。 不同类型的安装包就需要使用不同的软件包管理工具完成管理工作。 1、Linux业界主要有两种形式的软件包: rpm软件包: 由Redhat公司提出并使用在Redhat、Fedora、CentOS中,对应的软件包管理工具称为rpm包管理器。 deb软件包: 由Debian社区提出并使用在Debian和Ubuntu

QilanAllen的博客 541

IntelliJ IDEAwindows 下安装过程

IntelliJ IDEAwindows 下安装过程

m0_60416689的博客 215

软件安装后有时候为什么要重启电脑的原理

简单地说,大多数软件装完后,都需要修改注册表使其在电脑中占有“一席之地”,有些软件需要重启是因为它进入了注册表核心,但开机后的注册表核心已经像一面盾把该软件挡在了门外,该软件要进入,必须重启电脑,赶在那面盾建立起来之前融入注册表。   专业点来讲是这样的:软件安装完成之后,与Explorer有关的设置须等待Explorer重启后才能生效;而Autoexec.bat中设置环境变量也只能在重新启动

机器视觉之家 3536
上一篇: 堆和栈
下一篇: MPQ技术内幕
zhyjunFov
博客等级 码龄18年 17粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值