Mac 程序彻底卸载
目标是清除指定程序在授权范围内的专属文件、配置及运行组件,并用卸载后的复查证明结果。不能以卸载器成功、搜索无结果或应用图标消失代替验收。发现未解决残留就继续处理;权限、归属或系统状态阻塞时明确列出,不能宣称全盘零残留。
对象与授权
- 从当前请求和会话确定应用、安装位置及清理意图。创建本技能、询问按钮效果、要求扫描都不等于授权卸载示例应用。同名应用或多个安装副本会影响删除范围时,先核实身份。
- “卸载 X 并清理所有配置/残留”已授权删除 X 的程序本体及确认专属的配置、缓存、日志、插件、辅助程序等;不在清单完成后重复请求相同授权。若用户只要求普通卸载,按惯例保留独有业务数据,发现需要删除有价值数据时说明具体内容。
- 区分程序数据和用户作品:配置中的自定义场景属于用户明确要求清除的配置;录制视频、项目、文稿、素材、虚拟机、数据库等独有内容不能因“由 X 创建/打开”自动删除。用户已明确将它们纳入删除范围时执行,否则仅就这些具体对象澄清,并继续独立清理。共享组件先确认其他使用者。
- 默认覆盖当前用户与系统级安装、数据及有证据指向的本地路径;“整台电脑”须盘点其他用户目录及挂载卷,标明可访问和未覆盖区域,不擅自将其他账户的私人数据纳入删除。历史备份/快照、云端副本、系统审计记录单列边界,不为了“零痕迹”清空系统数据库或备份。
建立可核验清单
进行实际扫描或卸载前阅读 references/macos.md。优先本机安装信息和应用官方卸载说明;针对实际版本核对命令,必要时查官方资料。
- 获取应用真实路径、Bundle ID、版本、签名 Team ID、安装来源;检查内嵌 helper/extension 的标识、官方卸载器和包管理记录。主程序已不存在时,从残留配置、收据和服务定义重建身份,不因此跳过扫描。
- 同时按身份和路径调查:名称搜索只产生候选,结合 Bundle ID、签名、安装清单、配置内路径、服务可执行文件和应用文档确认归属。显示名称、Bundle ID 和数据目录常不同;例如 OBS 的
com.obsproject.obs-studio之外还有Application Support/obs-studio。不要只匹配 Bundle ID。 - 将候选记录成清单:绝对路径或服务标识、归属依据、专属/共享/用户作品、预计动作、执行结果。额外记录搜索根目录、使用的标识/别名、访问错误和未覆盖区域。清单可保存在任务工作区;不复制配置正文或密钥到报告。
- 包含隐藏项、空目录和符号链接;Spotlight、Raycast 和卸载器的结果都是线索,不是完整清单。扫描报错或无权限不算“不存在”。目录名称命中后检查实际内容和共享关系再决定整目录删除,指向目录外的链接不得自动跟随删除目标。
执行清理
- 在清除配置前提取调查所需的输出路径、组件标识和安装线索,避免删掉后无法追踪。用户可审阅简短清单或行动说明;这不是新增批准点。
- 先正常退出应用并核实相关进程;有未保存工作时不强杀丢弃。按真实服务身份停止会重建文件的后台任务。需要应用本体来注销扩展时先运行官方卸载流程,后移除本体,不能一开始删掉卸载能力。
- 按安装来源使用官方卸载器或包管理器,再独立清理遗漏;审阅卸载范围,不能盲用第三方一键深度清理、包管理器宽泛
zap或共享依赖自动删除。 - 执行只消费已核对的明确路径/标识。临删除前重新检查路径类型、父目录和归属,避免对象被替换或路径解析越界。绝不把搜索结果直接接到删除命令,不使用宽泛通配符递归删除,不清空
Library、厂商共享目录或整个废纸篓。 - 用户明确要求彻底删除的专属对象,在权限允许时精确删除,不默认制造备份、隔离副本或仅移入废纸篓后宣称无残留。普通卸载采用废纸篓时报告其仍占空间;已有废纸篓中相关对象也须确认身份后按授权单独处理。
- 系统扩展、驱动、登录项、特权 helper 使用受支持的注销机制;不能直接抹除受管系统目录、关闭 SIP 或绕过权限。证据表明需要管理员授权、用户操作或重启时,完成其余工作后说明具体剩余动作;不自动重启。
- 钥匙串凭据、TCC 权限、云端账号及订阅是独立对象:有明确相关授权时使用针对目标的官方机制,否则报告实际发现的项目,不能整库删除或擅自撤销共享凭据。
完成依据
卸载后同时检查原清单与重新发现结果:
- 每个已授权专属路径均不再存在(包括断开的符号链接),没有被进程或后台服务重新生成。
- 按原身份、别名和新发现标识重新搜索文件系统;再次覆盖参考表中适用位置,避免只检查已知列表。新增候选回到归属判断和清理。
- 相关进程、launchd 服务、登录项和系统扩展不再运行或注册;“等待重启移除”必须记为未完成。只检查目标,不结束其他程序或重置全局索引。
- 共享项和用户作品的保留依据明确;权限不足、未挂载卷、其他用户、备份、凭据及无法验证项有明确状态。搜索失败、截断或跳过必须披露,不能以零匹配抵消。
最终说明删除了什么、复查覆盖范围、保留项和剩余动作。全部适用检查通过时可说“已清理,并在已检查范围内未发现专属残留”;只有废纸篓操作时说“已移入废纸篓”。不声称物理不可恢复、全盘绝对无痕,或掩盖有证据的残留。没有阻塞时继续完成,不把复查、第二轮清理或本可执行的卸载留给用户。