软件安装过程解析

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

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6169

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

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

秋风的博客 9389

ICCompiler II实战:从NDM生成到APR流程的完整避坑指南

本文是一份针对ICCompiler II(ICC II)后端物理实现流程的实战避坑指南。文章详细解析了从NDM库生成、设计初始化、布局规划到时钟树综合与布线的完整APR流程,重点分享了各环节的常见陷阱、精细化配置命令与调试经验,旨在帮助工程师高效达成PPA目标,确保设计一次成功。

p4q5r6s7t的博客 531

Docker+vLLM内网离线部署Qwen3 流程

本文介绍了在CentOS 7系统下进行VLLM容器化部署Qwen3-32B大模型的内网离线方案。首先需准备Nvidia显卡驱动、CUDA 12.4和Docker环境。通过联网机器拉取vllm/vllm-openai镜像并导入内网服务器,同时从魔塔社区下载模型文件。部署时使用docker run命令启动容器,配置了GPU资源、内存共享、端口映射等参数,特别指定了模型路径、并行计算、内存利用率等关键参数。该方案实现了大模型在内网环境的安全高效部署,适用于需要离线运行的AI推理场景。

qq_42881308的博客 1036

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

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

supermanwg的专栏 2202

FPGA开发者必看:如何用SATA3.0主机控制器IP实现高速存储扩展(附Xilinx实测数据)

本文为FPGA开发者提供了基于SATA3.0主机控制器IP核的高速存储方案设计与优化指南。通过详细解析IP核架构、Xilinx FPGA平台集成实战及性能优化技巧,帮助开发者实现接近理论极限的540MB/s数据传输速度。文章还包含常见问题解决方案和高级应用场景拓展,是硬件工程师提升存储性能的必备参考。

weixin_30632089的博客 114

操作系统软件安装的原理

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

biao2488890051的博客 4053

晶圆测试(Wafer Sort)的核心技术与良率提升策略

晶圆测试(Wafer Sort)是芯片制造中的关键“入学考试”,通过探针台与自动测试设备(ATE)对晶圆上的芯片进行功能与参数测试,筛选不合格芯片以控制成本。本文深入解析了其核心技术,包括自动化视觉系统对准、测试流程优化策略,并探讨如何利用测试数据驱动良率提升,展望了DFT与AI智能测试的未来趋势。

e4f5g6h的博客 515

CentOS 环境 sngrep 安装及使用

在呼叫中心类应用开发过程中,经常需要对 SIP 信令抓包,分析排查问题。通常抓包的工具非常多样,如 Wireshark、tcpdump、ngrep 等都是可选项,但是针对 SIP 信令的抓包,sngrep 则更为好用。因为 sngrep 不仅提供了图形界面,还会将一通会话的 SIP 信令关联汇总,非常直观执行以下命令下载 的相关依赖库 1.2 添加 sngrep 的源并导入 执行下面的命令新增一个源仓库配置文件 然后在该文件中写入以下配置内容 执行命令导入源仓库的公钥 1.3 安装 sngrep

谈谈1974 8147

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

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

gitblog_07189的博客 472

WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)

   在进行自己的WRF项目模拟的时候,因为需要用中国土地利用数据替换WRF内嵌老旧的土地利用数据,故需要将土地利用进行替换。我使用的中国的土地利用数据是来自中国土地利用数据(1980-2015)。其中我以下载的lucc1980为例进行演示。 1、坐标转换    (1)下载的lucc1980数据如下图所示:    (2)在ArcMap中打开如下图所示: 打开属性表可以看到,lucc1980的坐标系为投影坐标系Krasovsky_1940_Albers,数据格式为GRID。这里需要将投影坐标系转换成地理坐

GIS 1万+

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

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

gitblog_07010的博客 475

【Unity引擎技术整合】 Unity学习路线 | 知识汇总 | 持续更新 | 保持乐趣 | 共同成长

本文对Unity引擎的知识进行了一个整理总结,基本包含了Unity中大部分的知识介绍。 网上也有很多Unity相关的学习资料,但大多数都不成体系,学起来的时候难免会东奔西走的摸不着头脑。 本文整理的多数文章都是有对应的系列性文章专栏,可以更方便的进行系统学习相关知识体系。

努力前行,总会成为自己心中的那道光 15万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

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

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、付费专栏及课程。

余额充值