18 windows windows-registry installation
我已经注意到,至少在 Windows 上,您可以下载一个直接的、静态链接的可执行文件并直接启动它,或者编写自己的程序并执行它(甚至动态)而无需安装它。
这让我想到了我的主要观点……安装过程的目的是什么?我的意思是除了Windows Registry之外。然而,出于实用性和使用目的,可以有一个单独的、独立的、独立的程序,该程序可以运行、存储在非易失性存储器上,并通过它所在的任何设备的文件系统进行访问,并在操作系统上执行。那么,如果许多几乎任何规模的优秀程序都可以完美运行而无需经过安装配置,那么所有这些“安装这个”业务有什么大不了的?这让我有点困惑,除了数据库或其他元数据/访问配置系统,如果后者(已安装的可执行文件)以与独立系统相同的方式执行和工作,那么这里的真正区别是什么?
我不知道未安装的程序与已安装的程序有什么不同吗?
PS:这不仅适用于 Windows 操作系统,还适用于任何实现类似功能的操作系统。
all*_*tic 18
程序作为安装程序而不是独立的可执行文件出现的原因有几个:
具有许多大型依赖项的程序可以捆绑基于 Web 的安装程序,这些程序下载依赖项并将它们放置在公共位置,以便多个程序共享它们。例如,DirectX 是一个非常大的库。如果系统上依赖 DirectX 的每个程序都将整个 DirectX 运行时与它捆绑在一起,则会占用大量空间。在 4 TB 硬盘的时代,这似乎无关紧要,但考虑到 SSD 的容量要小得多,而且它们正在超极本上得到普遍使用,有些只有 64 GB 的存储空间。当然,除了 DirectX 之外,还有许多其他共享库。
非常大且不断更新的程序最好作为许多小文件的集合分发,以及检查 Internet 更新的启动程序或更新程序,如果存在任何更新,则只下载所需的更改。如果所有大型程序都作为单个整体可执行文件发布,则修补过程很可能需要重新下载整个可执行文件,因为由于文件锁定,几乎不可能修补磁盘上正在运行的可执行文件。此外,因为更新程序需要知道它的文件在哪里,所以它通常将该目录路径存储在注册表中的一个众所周知的位置。
非常大的程序(例如 Visual Studio 和 Microsoft Office)的安装程序允许用户取消选择某些功能的安装,如果用户知道他们永远不需要它们。这有 3 个潜在的好处:减少磁盘空间消耗;如果安装程序是网络下载程序,它可以减少下载时间和带宽消耗;它可以减少用户机器上的“混乱”和“膨胀”,减少开始菜单/桌面快捷方式,减少启动程序等。
复杂程序的安装程序通常带有配置选项,用户可以使用用户友好的图形界面作为安装程序的一部分进行设置。例如,请参阅 MySQL 或 SQL Server 安装程序,它们可以引导您完成启动和运行数据库服务器的整个过程,甚至在您单击安装程序上的“完成”之前。
安装人员可以提示用户提供所需的信息,例如只需输入一次的许可证密钥。这可以简化程序本身的设计,并减少它在启动时必须做的事情和检查的数量。这也使用户有信心,一旦程序成功安装,它应该“正常工作”——程序中没有更多的“陷阱”可能阻止他们使用它。
一些程序与其他程序冲突。这是软件工程的一个简单而不幸的事实。在安装已知与其他程序存在冲突的程序之前,首先检查系统以查看是否安装了不兼容的程序通常很有帮助。如果是这样,则可以警告用户。例如,旧版本的 VMware 和 VirtualBox 存在非常危险的不兼容潜力,导致蓝屏死机,因为一个程序会尝试使用其他产品已经为用户保留的特殊虚拟化处理器指令. 如果您只是在没有安装程序的情况下将最终产品提供给用户,则您必须在每次安装时检查是否存在不兼容的产品。 程序的启动,这可能会减慢程序的启动速度。
程序可能依赖于其他系统组件,这些组件只能安装在系统范围级别,而不是每个用户级别。为了安装这些特殊的系统组件,通常需要管理权限,并且通常必须运行安装程序。
给出了安装程序有用的所有这些原因后,这里有一些来自另一面的观察:
许多程序,即使是那些只能作为需要管理员权限的安装程序下载的程序,也可以从它们的安装程序中强行“解压缩”并直接运行而无需安装它们。其他程序,尤其是开源程序,被PortableApps重新打包成独立的可执行文件。值得注意的是,某些程序从安装程序中解压后,功能会有所减少、出现错误或其他问题。
在 Windows 以外的操作系统上,几乎总是可以简单地下载(或编译)程序并以普通用户身份运行它们,而无需获得 root。对于作为操作系统核心部分的包,有一些例外,但对于大多数用户应用程序,您可以在主目录中运行它,而无需使用包管理器在系统范围内安装它。Windows 有点特殊,因为 Windows 上的大多数桌面程序都有一个安装程序,通常不能以任何其他方式安装。
即使在非 Windows 平台上,需要能够加载内核模块的程序也带有某种安装程序,它编译内核模块并将其安装在正确的目录中。如果程序是一个守护进程,它将使用系统服务脚本启动,例如在/etc/init.d
. 这种类型的“shrinkwrapped binary”在 GNU/Linux 上是一种不太常见的分发方法,但大多数 Linux 发行版仍然以可安装包的形式提供大多数软件,每个软件都需要 root 访问权限(管理员访问权限)才能安装。
你问我们为什么需要安装程序。简短的回答是我们没有——无论如何严格来说不是。有迹象表明,应用难以察觉的例子不能在原则上一样复杂的VMware Workstation可自动获得管理员权限捆绑成一个自包含的可执行文件,没有资源,没有安装程序,等等。甚至一些东西,写的虚拟机管理程序的内核模块出到磁盘上的文件,并在程序启动时动态安装它,并将其所有资源(图像、声音等)捆绑在可执行文件的数据部分中。
使用安装与否是一个选择是软件生产商必须做出。使用安装程序有优点也有缺点。许多厂商选择发布他们的软件都作为一个安装程序,并作为一个独立的二进制文件,或作为一个ZIP文件,可以简单地被解压并运行至少。对于不是绝对需要安装程序的软件来说,这是一个非常务实的方法,让大家都开心。通常,除了安装程序之外不以任何其他形式发布的软件是需要管理权限才能安装自身某些组件的软件,因为安装程序是获得所需权限的最优雅方式。
就我个人而言,我发现安装程序在我的日常工作中非常烦人,因为有时我想在我使用的计算机上没有管理权限时运行程序。我有很多手动解压缩安装程序以提取其中的程序文件,然后让这些文件正确运行的经验。但是,在我始终拥有管理权限的家中个人 PC 上,我发现安装程序有益且方便,因为大多数安装程序为我提供了有用的选项,例如是否创建桌面快捷方式,如果没有它,我将不得不手动执行这些选项。
归档时间: |
|
查看次数: |
12760 次 |
最近记录: |