为什么在macOS、Windows和Linux上安装应用程序如此不同?

合集 · 直观理解计算机技术【CoreDumped】 (68)

  1. 11:03
    代码中指定变量类型为何如此重要?
  2. 13:46
    栈为何如此之快?
  3. 17:53
    堆为何如此之慢?
  4. 19:56
    动态数组的内部机制(ArrayList VS LinkedList)
  5. 15:37
    探索计算机并发与多任务处理的历史
  6. 12:54
    晶体管是如何运行代码的?
  7. 16:12
    晶体管是如何记忆数据的?
  8. 18:47
    制作一个CPU来运行程序
  9. 11:23
    计算机如何将字符串转换为数字
  10. 17:18
    动态随机存取存储器(DRAM)的工作原理
  11. 16:05
    计算机处理器是如何运行条件和循环的?
  12. 6:51
    一个程序不是一个进程
  13. 14:52
    深入理解进程,如何进行上下文切换?计算机科学中最深刻和最成功的想法之一。
  14. 20:20
    处理器内部的单个位如何保护操作系统的完整性?
  15. 13:14
    计算的心跳:时钟如何推动 CPU 前进?
  16. 14:22
    英语原声版-计算的心跳:时钟如何推动 CPU 前进?
  17. 14:15
    (英语原声)进程间通信:共享内存或发送消息
  18. 12:29
    (中文配音)进程间通信:共享内存或发送消息
  19. 14:59
    (中文配音)为什么单核处理器需要线程?
  20. 16:07
    (英语原声)为什么单核处理器需要线程?
  21. 9:26
    (中文配音)多核系统上的线程
  22. 11:27
    (英语原声)多核系统上的线程
  23. 11:52
    (中文配音)为什么应用程序是特定于操作系统的?
  24. 13:09
    (英语原声)为什么应用程序是特定于操作系统的?
  25. 13:15
    (英语原声)硬件如何在多任务处理中协助软件?
  26. 11:29
    (中文配音)硬件如何在多任务处理中协助软件?
  27. 20:34
    链表的一个实际应用
  28. 45:02
    让你的电脑运行更流畅的奇妙算法
  29. 43:38
    (流畅中文配音)让你的电脑运行更流畅的奇妙算法
  30. 19:41
    (原声双语字幕)当程序调用 sleep() 时会发生什么?
  31. 17:57
    (流畅中文配音)当程序调用 sleep() 时会发生什么?
  32. 20:40
    这个简单算法驱动了真正的解释器:Pratt Parsing
  33. 18:19
    (双语字幕)编程中最难以捉摸的Bug:竞态条件
  34. 19:23
    (流畅中文配音)编程中最难以捉摸的Bug:竞态条件
  35. 16:02
    (中文配音)阻止内存攻击的底层电路
  36. 14:51
    (英语原声)阻止内存攻击的底层电路
  37. 18:04
    为什么有些项目会使用多种编程语言?
  38. 19:32
    为什么有些项目会使用多种编程语言?
  39. 17:15
    别再杀进程了!让 Ctrl+C 变成“喵”……(用信号实现)
  40. 19:23
    别再杀进程了!让 Ctrl+C 变成“喵”...(用信号实现)
  41. 19:05
    80 年代避免竞态条件的算法(以及它为何失败)
  42. 19:43
    80 年代避免竞态条件的算法(以及它为何失败)
  43. 22:10
    CPU如何与众多不同设备交互?
  44. 23:52
    (中文配音)CPU如何与众多不同设备交互?
  45. 14:04
    (中文配音)你每天都在用的奇特CPU操作
  46. 13:04
    你每天都在用的奇特CPU操作
  47. 18:04
    (中文配音)历史如何塑造了我们今天仍在使用的编程术语?
  48. 17:42
    (英语原声)历史如何塑造了我们今天仍在使用的编程术语?
  49. 16:41
    为什么有些底层项目里会充满这种奇怪的代码?
  50. 16:39
    (中文配音)为什么有些底层项目里会充满这种奇怪的代码?
  51. 21:35
    编译与解释代码如何共处同一程序中?
  52. 21:30
    (英语原声)编译与解释代码如何共处同一程序中?
  53. 17:09
    【双语字幕】Core Dumped 常见问题的集中回答
  54. 13:36
    【双语字幕】90年代的设计决策阻碍了Python并行化
  55. 12:01
    【中文配音】90年代的设计决策阻碍了Python并行化
  56. 17:51
    Linux创建进程的奇怪方式
  57. 18:14
    【中文配音】Linux创建进程的奇怪方式
  58. 19:49
    CPU如何运行函数?
  59. 19:38
    【中文配音】CPU如何运行函数?
  60. 17:15
    没有人解释的问题:内核的边界在哪里?
  61. 19:36
    【英语原声】没有人解释的问题:内核的边界在哪里?
  62. 35:49
    硬件如何让线程问题不再那么棘手?
  63. 19:47
    为什么在macOS、Windows和Linux上安装应用程序如此不同?
  64. 24:00
    游戏公司真的能破坏你的电脑吗?
  65. 10:43
    一个视频说透“架构”:为什么你的程序换个CPU就可能跑不了?
  66. 14:45
    CPU如何执行有符号和无符号运算?
  67. 19:11
    简单指令, 奇妙算法
  68. 9:26
    当CPU遇到它不认识的指令,会发生什么?😱【底层原理】
Description
本视频深入探讨了 macOS 与 Windows 在应用安装与运行机制上的根本差异。从“拖拽安装”这一常见现象出发,揭秘了 macOS 中 `.app` 文件实际上是目录(应用包),而非可执行文件;通过终端与 Finder 的对比,解释了内核与用户空间程序(如 Finder)如何协作,以及 `info.plist` 文件在应用识别中的关键作用。随后,对比了 Windows 依赖注册表与安装程序进行系统集成的模式,并简要提及 Linux 桌面环境的 XDG 规范。最后,作者表达了对 Windows 安装流程的偏好,指出 macOS 的“拖拽”方式在面对大型套件或系统级依赖时仍需安装器,揭示了两种系统设计哲学的不同

Comments

薛定谔的狸猫- 2026-05-20

macOS也有pkg包,那种一堆依赖的安装方式是走homebrew,macOS费老大劲的目的是向小白用户隐藏技术复杂性。(另外也和当年基于光盘的软件分发方式有关,打开CD ROM(和今天的载入img文件一模一样)里面只有一个.app文件夹而不是显示一堆dll文件多简洁),跟游戏机插入盘就能玩一个设计思想。

♥ 66

立青0_o 2026-05-20

Windows好多应用到处拉屎 根本卸载不干净,不知道macos这个方法能不能卸载干净应用程序

♥ 68 ↩ 39

冬天的甜柚子 2026-05-21

win至少有个卸载程序,还给你希望可以卸载完所有内容,但是mac就完全是灾难了,必须借助第三方卸载软件才有希望卸载完

♥ 61 ↩ 35

CreeperLv 2026-05-21

那我要说一个在mac下删游戏,不会自动删游戏下载的数据,得去Library里找那50G💩的故事了(

♥ 28 ↩ 4

铁血柔情2009 2026-05-20

还是喜欢mac和linux,不喜欢windows.近期把我笔记本从window安装cachyos,系统轻量流畅,资源占用低,不卡顿没广告,还可以通过proton玩windows游戏,太爽了。 最近又调整kde桌面布局,类似mac风格,后台图标放到了右上角,左上角可以显示应用菜单。舒服

♥ 53 ↩ 19

我整个人都懵比了 2026-05-22

这个ytb视频者有个问题就是,win下的安装包并不真的只写入program files,还会写入~/appdata/,和各种地方,在各处拉屎,这才是最噩梦的。类似的就是mac中pkg安装方式多么噩梦,在win就是日常

♥ 33 ↩ 5

HellAthena 2026-05-20

macos双击安装程序,弹出拖拽安装的界面,然后手动把左边的应用图标拖进右边的application目录,就安装好了。个人感觉这种安装方式非常傻,确认安装明明只要有一个点击按钮就好,非得整个拖动这样的复杂操作[藏狐]

♥ 24 ↩ 4

FrostSingularity 2026-05-21

exe安装确实是毒瘤。不仅会在安装阶段就要求管理员权限,而且甚至有时会写死安装路径强制安装在programfiles里而不是应该安装的用户文件夹下。msi就好的多。老实说exe就该被直接禁止,可以说是win下最大的安全漏洞之一,完全绕过uac的东西。

♥ 26 ↩ 3

泰伯利亚汁 2026-05-22

结尾说的,linux方式接近windows,是因为有包管理器,包管理器在安装和卸载中起注册表的作用,启动过程还是根据$PATH找/bin,和macos找/Applications一样,和windows自定义目录写进注册表不一样

♥ 16 ↩ 6

绝地之父 2026-05-20

想要打包一个deb文件太简单和省心了,而且用dpkg和apt命令管理起来很方便。 exe和dmg管理起来就比较混乱了,前者既能表示可执行文件又能表示安装包,不过用rar自解压缩打包exe就简单多了。后者dmg更像是iso,还得调整各项参数和背景图片。 所以我一般把win平台的exe文件当压缩包处理,或者像mac平台的app文件压缩后发布。

♥ 14 ↩ 6

__Jianlong_Liu 2026-05-21

苹果就是反人类, 你安装的时候是复制, 卸载的时候要做的可不止删除, 不然怎么会有人卖app uninstalller之类清理工具割韭菜

♥ 21 ↩ 4

無良小萬 2026-05-20

相比之下,mac安装看着像是复制文件夹到application操作,但是Windows安装有解压文件到program file文件夹,还需要修改注册表,创建开始菜单链接,创建桌面快捷方式等一系列操作,win这里面还有很多事情并不统一明确

♥ 11 ↩ 4

咸湿的gentleman王 2026-05-20

注册有助于统一管理。

♥ 8

执剑人_kl 2026-05-20

linux感觉还是deb方便

♥ 7

荡起的双桨 2026-05-21

现在Linux也开始容器化安装应用了

♥ 7 ↩ 3

再从西厢过 2026-05-21

我可太喜欢mac的安装方式了.

♥ 10

迷途的凶林 2026-05-25

所以,这也就解释了为啥去苹果专卖店把他们展示样机上的final cut pro 拷贝到自己电脑上,也就相当于购买了这个软件了。

♥ 6 ↩ 2

花火提瓦特分火 2026-05-23

好麻烦,扔虚拟机和沙盒里算了,或者用便携版

♥ 6 ↩ 3

野生的呜喵王 2026-05-20

linux安装程序,大部分都集中在/usr/local/bin里面[笑哭],也有些会在/opt目录下

♥ 6 ↩ 10