标准"安装"实际上做了什么?

MrG*_*les 19 deployment installation platform package

我或多或少只是一个业余爱好者程序员,并且在.NET ClickOnce世界中已经成长为编码方式.

当一个"安装"程序时,实际发生了什么?!

另外:一些小应用程序/工具只是从exe运行.为什么大多数程序需要花哨的安装过程?有什么优点,缺点,利弊?安装通常是必要的还是更像标准做法?

为额外的问题道歉.我只是希望一个普通英语或多或少的外行人对关键因素的解释.

Gre*_*ill 30

您真正关注的是许多遗留原因,这些原因都融入了Windows世界的标准做法.

首先,一些对比,因为它并不总是这样.Mac OS X中的"应用程序"只是一个内部具有特定结构的目录,以.app扩展名命名.安装应用程序就像将它(只是应用程序图标)拖到"应用程序"文件夹一样简单,卸载涉及将其拖到垃圾箱.就是这样,通常不需要花哨的安装程序.

在Windows上,应用程序通常由需要"注册"的独立组件构建.这涉及安装程序将一些零碎的部分写入Windows注册表,以告知Windows在哪里可以找到组件.是的,应用程序可能应该知道在哪里找到它们(因为它们都安装在同一个地方),但是多年的传统和不同的连接组件的方式使我们处于今天的状态.

通常,Windows上的安装程序:

  • 复制文件
  • 注册组件
  • 设置安全权限(如果适用)
  • 将图标添加到"开始"菜单和/或桌面
  • 将更多内容写入注册表以告知Windows将程序添加到"添加和删除程序"

  • 其中大部分确实可以在应用程序的第一次运行时完成。但是,首先存在安装程序的主要原因之一是提供*卸载程序*。通常,Windows 应用程序需要在文件系统和注册表周围的许多地方编写内容,因此清理它们的唯一好方法是让程序为您完成。 (2认同)
  • 哦,在安装时可能需要完成的另一件事是需要管理员权限的任何事情.如果存在任何此类必需操作,安装程序将请求以适当的管理员权限运行该操作.如果没有这个,应用程序的第一次运行可能会作为常规用户帐户运行,并且没有权限执行这些操作. (2认同)

Aar*_*lla 14

该程序试图修改计算机,使其工作,所有竞争产品都失败.在Windows上,这意味着:

  • 修改注册表中的任意键,直到它变得缓慢且充满损坏的条目
  • 用您的软件可以使用的单个古老版本替换DLL
  • 在尽可能多的地方传播尽可能多的文件
  • 创建卸载脚本以保持用户可以在不重新安装操作系统的情况下摆脱软件的错觉.在用户尝试运行此脚本的不太可能的情况下,您可以教育他/她不要再次执行此操作,例如"文件....可能被其他应用程序使用.您真的要删除它吗?是/否/可能/任何答案/所有答案都是正确的"
  • 在不明显的地方安装挂钩,以便在计算机启动时运行软件.这可能会减慢启动过程,但您的软件会立即启动,因此为您付出的代价很小.
  • 做一些需要花费很长时间但却没有人知道你做了什么的模糊事物("安装程序正在准备安装"做了15分钟?)
  • 检查是否有足够的磁盘空间但使用32位整数以确保它不能安装在1TB磁盘上.
  • 一个重要的任务是安装失败并打印错误:"安装失败.这可能是因为安装了防病毒软件.请将其停用并重试." 这将确保用户开始不信任他们的防病毒软件(尤其是在第二次运行期间安装成功,因为安装程序中的模糊错误未被触发),并且他们中的很多人将忘记再次启用病毒扫描程序或甚至卸载该死的东西.

    世界各地的病毒作者也是人!垃圾邮件弥补了互联网上的大部分流量,这必然意味着它是重要的,谁不想成为世界上最大的社区的一部分?最重要的是,你可以通过这种方式赚大钱.所有你需要的是一种软弱的良心和/或一些犯罪能量.

  • 安装程序的一个非常重要的部分是增加注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-7-9-23-64738-1349283462-3754093625-4491\IsYourWindowWideEnough\NotGivenUpYetHuh\GoAway\ImportantSystemInformation\Let See How You Can Handle Spaces\DamnIGottaStopSincePathsCanHaveOnl\ReinstalCtr

    这个重要的系统计数器将有助于为用户创造不稳定的错觉,直到他们感到强烈要求重新安装整个系统.这将有助于专业IT行业销售支持时间,销售新计算机,更多RAM,更大的硬盘或新的Windows版本(它们必须更好,对吧?).

注意:如果您认真对待本文,请寻求专业帮助.