给出一个非常笼统的答案:安装是确保程序已完全设置好执行的过程。(甚至还有一个使用相同定义的维基百科页面)。我不会尝试对所有安装类型进行完整而准确的总结,而只是尝试生成一个总体概述。
最后一切都由cpu命令控制。要到达那里,需要进行翻译。除此之外,在正常情况下,还有一个封装环境(操作系统)。在这些之间,您可能依赖于驱动程序等。
操作系统,无论是 windows / Unix / 等,我们都在那里,所以我们不必担心任何直接的硬件转向(无论如何对于这种情况)所以给一个随机的编程语言或脚本,我们需要让它运行操作系统。直接在操作系统上,或通过诸如 .Net/Java(Apache for PHP)之类的框架
到目前为止已知的摘要,但我们已经为我们在这里讨论的安装类型设置了参数:)
在经典 C 中,语言首先被编译成一组可由操作系统解释的指令。正如你所说,不需要安装,只需要预编译。在 Java/.Net 中,已经安装了一个框架,因此编译的中间语言和所有引用都由框架处理。诸如 Javascript 之类的浏览器语言在浏览器中进行解释。浏览器本身已安装,因此无需安装。PHP 脚本也被解释。大部分时间由 Apache 完成,但不需要单独安装。当然,其他脚本语言,如批处理/vbscript/等都有自己的操作系统解释器。
现在要了解在阅读有关写入注册表时触发我的观点,提到da da da dum DLL Hell。链接的维基百科页面描述了 dll 遇到的问题,但我主要想提及它作为注册表编写的桥梁。安装需要写入注册表的最常见情况之一是注册dll。您不能简单地拥有一组执行 (.exe),它使用了另一个集合 (.dll) 中的一堆函数,除非操作系统知道另一个集合 (.dll)。为了使 dll 为人所知并可用,需要对其进行注册。这可以通过命令提示符(如果我没记错的话是 regsrv32)来完成,但对于最终用户,安装程序会处理这个问题。
底线是,安装程序准备环境,以便程序可以运行。即使该程序在技术上无需额外准备即可运行,安装程序也可以设置桌面快捷方式、添加菜单选项或链接文件类型(Windows 中的另一个注册表设置)。