一洼绿地

AI 写一个 Mac 下的卸载工具

·5 min read

macOS 上的应用卸载辅助工具:拖入任意 .app,根据 Bundle ID 与显示名称扫描常见关联文件,在列表中勾选后移入废纸篓(可先在废纸篓中恢复)。

下载地址

https://github.com/koocyton/macclean

界面预览

MacClean 主界面


特性

  • 拖放分析:将应用程序包拖到窗口中的拖放区即可解析 Info.plist,读取显示名称与 CFBundleIdentifier
  • 关联项扫描(在用户目录与部分系统路径中查找常见位置,避免全盘深度遍历):
    • 应用程序包本体
    • 偏好设置(Preferences 下对应 plist)
    • 保存的应用状态、Caches、Application Support、Logs、WebKit 等目录下以 Bundle ID 命名的条目
    • 沙盒容器(Containers
    • 崩溃报告、诊断报告(.ips
    • 在 Application Support / Caches / Logs 等目录下按名称与 Bundle ID 片段做的浅层名称匹配
    • 部分应用可能写入的 /var/log 下匹配项
  • 选择性卸载:每项可单独勾选;支持「全部保留」「全部卸载」快捷操作。
  • 安全删除:删除操作使用系统废纸篓 API,不是 rm,误删可在废纸篓中还原。
  • 图形界面:基于 egui/eframe,带中文界面与现代化深色主题;可打包为 .app,从访达双击启动(不依赖终端窗口)。

说明:扫描结果属于启发式列表,无法保证覆盖某应用的全部残留;卸载前请自行确认路径。若应用数据在其他自定义位置,不会自动出现。


系统要求

  • macOS(建议 11.0 及以上,与打包脚本中的最低版本一致)
  • 若从源码构建:已安装 Rustrustup)与 Xcode 命令行工具(含 iconutilsips,用于生成 .icns

安装

方式一:自行从源码构建(命令行二进制)

cd macclean   # 本仓库根目录
cargo build --release

可执行文件:target/release/macclean。适合开发调试;若用 cargo run 启动,进程会挂在当前终端上。

方式二:打包为 macOS 应用程序(推荐日常使用)

在项目根目录执行:

bash packaging/macos/bundle.sh

脚本会:

  1. cargo build --release
  2. 根据 assets/app_icon.png 生成 AppIcon.icns
  3. 在项目根目录生成 MacClean.app

MacClean.app 拖入「应用程序」文件夹即可。从启动台访达双击打开,一般不会弹出终端窗口。

若系统提示来自未认证开发者:可在访达中对 MacClean.app 右键 → 打开,或在「系统设置 → 隐私与安全性」中允许运行。自行签名或公证可进一步减少提示(需 Apple 开发者账号)。


使用说明

  1. 启动 MacClean.app 或命令行二进制均可)。
  2. 将要分析的应用 .app 拖入窗口中的拖放区(或拖到窗口上,行为以当前版本为准)。
  3. 等待列表加载:上方会显示应用显示名与 Bundle ID;下方表格列出扫描到的路径、类别与估算大小。
  4. 勾选需要移入废纸篓的项目(默认多为全选,可按需取消)。
  5. 点击 「卸载选中项」,等待进度完成。
  6. 需要时到 废纸篓 中检查或恢复文件。

提示

  • 若某次扫描结果为空或偏少,可能是该应用未在常见路径留下可识别文件,或名称与 Bundle ID 与启发式规则不匹配。
  • 卸载系统组件或共享库相关路径前请格外谨慎。

开发

cargo build          # 调试构建
cargo build --release
cargo test             # 若有测试

打包相关文件:

  • packaging/macos/Info.plist — 应用元数据与图标名
  • packaging/macos/bundle.sh — 一键生成 MacClean.app
  • assets/app_icon.png — 窗口与图标集所用源图

许可证

见仓库根目录 LICENSE(AGPL-3.0)。