例如NTFS 为什么有的Mac软件卸载了以后还会弹通知?

【例如NTFS 为什么有的Mac软件卸载了以后还会弹通知?】使用过mac 一段时间后,读者会了解到,App(应用程序)一般通过 Apple store 或 网站下载获得 。Apple store 上的软件的安装和卸载就不谈了,简洁的令人感动 。
而网站上的软件分发一般有三种方式:分发 dmg,分发 zip 包或者分发 pkg包 。
前两种比较简单,双击 dmg 或者 zip 包后就能得到 app 。这也是Mac 上主流的app分发方式;类似于windows 系统上的绿色安装包,解压即可用 。
下面就是今天要讲述的内容了:pkg 包的安装卸载 。
pkg 包的安装:
类似于 Windows 上安装软件,双击pkg 包后会打开了一个安装界面,选择磁盘,然后各种点下一步就完成安装了 。
显然这种方式相比"解压即用"流程长很多,但很多著名的软件都选中这种安装方式,比如 "NTFS For Mac"、"Microsoft office"等 。原因是因为系统的 Pkg 安装器允许软件在安装时做额外的事情,即允许安装 app 时执行脚本,以安装app 运行所需要的关键组件 。
以 "NTFS For Mac"为例,它在安装过程中会安装 kext(内核扩展),Preference Panes (系统偏好设置的小组件)‘ FileSystem(文件系统) ,Daemon(守护进程),LaunchAgents(启动项, NTFS 用于检测软件更新)等 。只有上述关键组件成功安装了,才能保证 NTFS For Mac 的正常运行 。
pkg 包的卸载
说了一大堆,读者可能就会问了,对我没啥意义呀,就是安装费点事罢了 。这里我只能说 "too young too simple", 安装时没感觉,但卸载就麻烦了 。
如果用户只是简单的卸载了"NTFS for Mac.app",那么上面 pkg 安装过程中安装的 kext, FileSystem, Daemon 等等还是会留存在电脑上 。
更可恶的是还遗留着LaunchAgents,每当重启电脑时,NTFS Updater 总会弹窗提醒是否要更新 。
那么如何完全卸载安装的 pkg包呢?
有的软件很良心,像 NTFS 就在安装包内预留这一个 "Uninstall NTFS For Mac .app" 。但很多软件的 Pkg没有预留卸载器,或者卸载器也无法完全卸载干净 。所以了解下如何清理 pkg 是很有必要的 。
关键:Bom文件
Bom:(Bill of Materials)
当 Pkg 安装时,系统会自动将安装流程记录在 Bom 文件中 。包括文件的安装路径、大小、校验和等 。Bom 文件存储在 "/private/var /db/receipts",以"NTFS For Mac"为例,它的 bom 文件叫做 "com.paragon-software.pkg.ntfs.bom" 。可以通过"lsbom -p MUGsf /private/var/ db/receipts/com.paragon-software.pkg.ntfs.bom" 读取 bom 文件中的内容 。这个目录下还有一个同名但后缀不同的 plist 文件,记录着 pkg 版本,location 等信息 。结合着两个文件就能得到所有 pkg 安装时额外安装的文件了 。
移除额外安装的文件
得到了PKG 安装时额外安装的文件,卸载时直接删除文件就好了嘛?
不行的 。比如上面 NTFS 安装的 Kext.Daemon 等,是不能直接删除的 。以 Kext 为例:需要执行具体的 "kext unload" 操作,之后才能安全删除 。简单来说就是不同的文件类型有不同的卸载方式,只有对 OSX 比较了解的开发人员才能胜任这个工作 。
说了这么多,好像对普通读者没啥用呀 。PKG 卸载很麻烦,还需要专业知识 。麻烦读者别打我哈,我有一个简单的办法,使用 Lemon 进行卸载就好了 。
Lemon 最新版已经适配了某些 Pkg包的卸载 。如果读者有遇到哪款 app 卸载不干净的,联系我们哈 。

例如NTFS 为什么有的Mac软件卸载了以后还会弹通知?

文章插图
 




    推荐阅读