Pages

Thursday, 30 January 2020

为什么macOS安装dmg可以一拖了事,而Windows下大部分软件必须要启动安装程序?

问题

为什么 macOS 安装 dmg 可以一拖了事,而 Windows 下大部分软件必须要启动安装程序?
设计上有什么差别吗?我知道Windows也有绿色软件,但都是一些非主流的小工具或者是第三方修改的东西。
而Mac主流就是拖动安装的,有人说Adobe不是拖动安装,但是功能和Lightroom相似的Capture One是拖动安装。说明Mac上大型软件不读进度条也是完全可行的。
既然macOS软件不需要配置一堆环境,写注册表什么的,一样可以正常工作。那么windows搞那么麻烦是不是一种缺陷?

回答

这应该是一系列历史遗留问题的行程。
现在我们说安装一个软件,好像软件天生就应该是放在计算机硬盘里一样。但在90年代初期,个人电脑上还只有dos和unix操作系统的年代,程序并不是安装在计算机硬盘上的。
我记起来我家的第一台电脑,那时候买到的『软件』其实都是一盒盒实实在在的软盘。不是安装盘!那时候用大部分软件,都要先插入那个软件的3.5寸盘或者5寸盘(3.5寸盘驱动器是windows的A盘,5寸是B盘。现在你们知道为什么硬盘分区为什么是C盘开始了吗?)然后再启动程序。退出程序之后将磁盘拔出,留待下次使用。比如江民杀毒就是一张5寸盘,而某个早期英语学习软件则是一叠3.5寸盘……当然这也意味着同一时间主机上只能运行一个前台软件,好在那时候本来就都是命令行操作,并没有什么不合理。
很显然,早期的PC硬盘空间并不足以支撑『把程序都放在硬盘上』这种现在看起来天经地义的需求。而Mac研发比PC还要更早一些,所以Mac设计之初为了让使用者和开发者能比较合理的管理自己的软件,提出了这种『一个软件对应一张磁盘』的概念。要用哪个插哪个,当然那时候也不存在『安装』的概念,因为『软盘』里的程序都是已经安装好了的状态,没办法也不需要把它移到主机硬盘上。
到Windows图形界面出现的时候,多窗口切换程序变得很重要。但一台机器上不太可能给你装一排软驱/光驱。于是『把程序都放到硬盘上』变成了必须要做的事情。好在硬盘容量也终于提升到了可以容纳个人应用程序的水平,于是微软开始研究如何合理的实现『安装』这个概念。
从现在来看微软的这套复杂的安装逻辑,应该是为了尽量优化空间占用而生的。因为那时候的硬盘空间还是很有限,经不起一丁点浪费。所以必须要尽可能多的重复使用已有的库和资源,那么每安装一个组件,就都必须要做一套复杂的检查。同时还得有一个地方告诉后来的程序有哪些东西可以复用……从那个时候的设计者的角度来说,安装的时候确实浪费了不少时间,但换来的是以后你可以轻松的启动多个软件,在前台自由切换。一切还是值得的,只是这种无奈的抠门策略最后变成了一种标准,就有点尴尬了……
那么Mac那时候在做什么呢?他们在开除乔布斯!(当然后来又把next买了回来……)再加上后来放弃power pc重返x86的折腾,总之是错过了搞一套相似的体系的时间点。等到OS X最终尘埃落定重返市场的时候,硬盘技术又有了大的进步。这一回,已经不需要锱铢必较的省空间了,尽管每个软件自己的体量也变得很大,但整个放到硬盘里还是绰绰有余的。
于是把当初『一个软件对应一个软盘』的概念拿出来,变成把安装盘里已经装好可以独立运行的软件直接复制到硬盘上,就自然而然的成了最直接也最省事的方案。相比浪费的几个G硬盘空间,安装快速,管理方便才是最重要的嘛!而乔教主对简洁直观的用户体验的追求也一定是很欣赏这种方式,于是就成了Mac上的主流。