这与“ 开发人员为什么不在linux上创建安装向导? ” 相反,但很有趣,但让我认为“自动安装是自然的方式。为什么他们使用向导?”。
所以这是反问题:
我确定这与懒惰无关,但我无法理解为什么开发人员,甚至主要是面向消费者的应用程序,都不会进行完全不麻烦的全自动安装。相同的应用程序通常会在Linux上自动安装,那么为什么不使用Windows和Mac OS?
这种趋势是否有任何技术原因,还是仅仅是惯例?
这与“ 开发人员为什么不在linux上创建安装向导? ” 相反,但很有趣,但让我认为“自动安装是自然的方式。为什么他们使用向导?”。
所以这是反问题:
我确定这与懒惰无关,但我无法理解为什么开发人员,甚至主要是面向消费者的应用程序,都不会进行完全不麻烦的全自动安装。相同的应用程序通常会在Linux上自动安装,那么为什么不使用Windows和Mac OS?
这种趋势是否有任何技术原因,还是仅仅是惯例?
Answers:
用户首先应该能够决定是否要在计算机上安装该程序。在您看来,人们显然选择安装程序似乎是不言而喻的,但是恶意程序的主要特征是,无需计算机用户就可以知道它的安装。
通过UAC使知情同意更加明确。
大多数现代软件都遵循“点击”模式进行许可。也就是说,用户在安装过程中同意许可条款,作为安装程序的条件。用户很少阅读这些协议并不意味着它们不受它们的束缚,尤其是当他们单击标记为“我同意这些条款”的复选框时。
许多软件包都有选项,可让您以某些方式更改软件的安装方式。其中最简单的方法是让您决定是否要在桌面上显示图标,但是在较大的应用程序中,可以决定要安装哪些功能。
尽管Windows生态系统中的程序在安装过程中(例如,无需注册的安装)的侵入性有所提高,但安装通常仍然是一项艰巨的操作。进度条和其他视觉辅助工具可以指示实际发生的事情。向导的最后一页告诉您安装是否成功。
最后,最好的软件包会告诉您下一步该怎么做。第一步是什么,如何开始,如何获得帮助。大多数软件在安装后都会留下启动图标,仅此而已。永远不要高估用户的专业水平;在您看来令人难以置信,但仍然有些人不知道如何查找和启动他们刚刚安装的软件程序。
从我所看到的,它实际上可以归结为整个“ Windows体验”。也就是说,使任何操作或选项对用户来说都尽可能可见。
我说这的原因是,安装不需要GUI。基于MSI的安装程序可以以类似于基于Linux的软件包的方式静默安装。GUI完全是可选的,但在那里仍然可以使用户直观地了解后台发生的情况。
在Linux中,这可以通过使用程序包管理器轻松完成。如果要安装软件包,则必须特别要求该软件包。对于技术含量较低的用户,通常可以使用基于GUI的软件包管理器供用户安装所需的软件。
在Windows中,不存在这样的东西。如果用户要安装基于Windows的软件,则必须分别查找和下载该软件。没有标准化的工具可以帮助用户配置和安装软件。因此,每个软件随附的安装GUI非常类似于Linux中的软件包管理器GUI。它只是为了允许用户配置安装并跟踪其进度而存在。
在很多情况下,由于存在管理GUI,因此不需要安装GUI。例如,流行的Steam平台将在安装脚本的帮助下,自动安装可通过Steam商店购买的任何游戏或软件。
另一个很好的例子是SCCM。系统中心配置管理器(简称SCCM)是用于管理网络上的计算机组的软件。它包括通过称为“软件中心”的GUI使软件可供安装的功能。单击任何按钮,即可使任何基于MSI的安装程序可供安装。在我工作的环境中,我们提供了从Adobe的Creative Suite到WinZip之类的软件。用户需要做的就是搜索目录以找到可用的内容,单击“安装”,然后等待确认。这几乎与我要在运行Linux Mint的家用计算机上安装某些东西的过程完全相同。
Window使用msi文件,该文件的工作方式与其他程序包相同。可以通过设置标志以静默方式安装它们,但是默认行为是Windows提供了一个GUI,其中包含程序包中定义的所有配置选项。因此,对于普通用户而言,msi文件的行为类似于exe安装程序。
作为经常选择更改默认值的用户,我发现使用GUI是了解我在安装程序时具有哪些选项的最简单方法,并且可以方便地同时更改它们。
关于默认情况下完全无提示的安装程序的可能性。在Windows上,习惯上允许用户选择安装目录,如果在GUI中不允许使用该选项,那么您将遇到很多用户。此外,在安装程序时,用户习惯于至少看到最少的对话,如果您什么也不显示,他们可能会认为安装失败。
开发人员的确可以在Windows上自动进行安装,但是并非所有软件都以这种格式提供。与这里的许多其他答案相反,Windows确实具有一个标准的且被广泛使用的“程序包管理器”(与我同在),但是即使是在开发人员中,它也鲜为人知,因为它针对的是企业而不是最终用户。
它称为SCCM,每个大型企业都使用它来管理其Windows安装。除了能够管理软件包(推送软件和对客户端计算机的依赖关系)之外,它还管理Windows和其他已安装软件的更新。
SCCM甚至不被技术用户用来管理自己的计算机。它实际上并不是要为管理一台计算机带来很大的好处。实际上,如果没有Active Directory /未加入域的计算机,它甚至可能无法工作。因此,即使它确实管理软件和更新部署,我也不会真正将其称为Windows 软件包管理器。
但是,我的意思是,Windows上有自动安装,并且被大型企业的系统管理员广泛使用。如果看到提供.msi下载的产品,则可能是因为它希望通过SCCM自动部署到数千台计算机上。
免责声明:我本人还没有使用SCCM,对此知之甚少,因此我可能对上面的一些细微之处是错误的。
在技术方面,Windows倾向于比Linux更好地集成程序(通过注册表)之间的集成。这需要正式的“安装”过程,而不仅仅是将程序复制到硬盘上(例如,启用上下文菜单)。某些操作系统(例如Mac OS)会在幕后或首次运行时执行某些操作,但Windows倾向于将其明确地作为安装的一部分。
在非技术方面,Windows倾向于设置它而忘记它。例如,Linux往往没有太多设置(安装选项),但是在运行程序时经常使用标志-因为您已经习惯了这样做;或在进入程序后更改选项。Windows更喜欢在指定的时间(安装)中使用设置选项的体验,而不希望用户每次运行程序时都使用命令行标志或设置选项。这会降低灵活性(因为您每次都可以使用不同的标志),尽管通常这对高级用户是公开的(例如,快捷方式中的选项);但为大多数用户提供了更简单的界面,并允许开发人员向用户展示一个简洁的界面,用于设置必要的选项和默认值。
免责声明:这主要是推测,但是基于我打包Windows应用程序以进行安装和部署的经验。
这完全取决于平台上的实际安装标准。在Linux上,标准是使用软件包管理工具,例如apt
(基于dpkg / Debian的)或yum
(基于rpm / RedHat的)进行安装。一旦提供了用于部署的软件包,构建向导就很浪费时间,因为绝大多数用户无论如何都会使用该软件包(作为其标准)。
通常,在Windows上,标准是基于GUI的安装。还有是替代方案,但是,没有这些替代的是适合作为用于安装者100组%的替代:
如果您的软件足够复杂以至于需要部署,则它几乎必须提供用户期望的GUI安装。还有许多产品使构建这些向导变得相当容易,因此就开发时间而言,提供基于GUI的安装程序通常是最省力的选择之一。一旦有了基于GUI的安装程序,您就需要评估上述各项的成本效益比(请记住,新功能以负100分开头),对于许多产品而言,构建和维护这些替代品根本不值得付出努力。
请注意,具有某种“静默”模式的安装程序在Windows上非常普遍,但是,它往往不是默认模式-再次因为它不是标准模式。大多数Windows用户会发现一个安装程序,一旦您运行起来相当令人不安,就会立即自行安装。