普通卸载只删主程序;注册表、服务、PATH、CLSID、跨盘缓存常被留下,传统清理器又容易误删用户文件。
Remova 的原则是 Find it. Explain it. Remove it. Restore it.(找到 · 解释 · 删除 · 恢复):
核心路径(Deep Uninstall):选择软件 → 查看详情 → 深度卸载 → 官方卸载程序 → 自动扫描残留 → 证据分类 → 用户确认 → 可选备份 → 清理 → 报告/可恢复。
普通卸载:把程序删掉。
Remova:找到程序、卸载程序、追踪关联、识别残留、解释风险、最后清干净。
| 能力 | 说明 |
|---|---|
| 决策列表 | 点行打开右侧详情:体积、关联分桶、健康度;普通/深度/强制三模式 |
| 深度卸载闭环 | 确认框写清流程;阶段条(识别→官方卸载→扫描→分析→报告);清理后报告与复核 |
| 证据扫描 | 安装目录、快捷方式、TEMP、注册表、Run、服务、计划任务、PATH、CLSID/Shell、驱动、跨盘浅根、WebView2 缓存、主目录点目录、MuiCache |
| 说人话 | 每条残留标明「为什么删 / 为什么保留」;安全 · 建议确认 · 将保留 三档 |
| 判断依据 | 孤儿残留可展开:无卸载记录 / 含 exe / 配置文件 / 安装根目录 / 最近修改等证据 |
| 深度卸载补充 | 损坏的 MSI 安装记录、孤儿防火墙规则、失败项锁占用诊断(确认后可结束安装目录内的进程并重新扫描/重试);报告显示实删/保留/待重启体积,可重新扫描或做只读深度注册表核查 |
| 用户数据红线 | Documents / Downloads / 同步冲突目录默认不勾,避免误删你的文件 |
| 删除保险箱 | 清理前可选备份(确认框默认不勾);会话保留 7 天;报告与历史可打开已有备份 |
| 可验证 | 清理后复核 checklist(路径 / 注册表 / PATH 是否真的清掉) |
| 孤儿残留 | 一级页面专列:无安装记录的残留,按来源分组 |
| 系统项语义 | 启动项和服务显示可读名称、来源和可用图标。服务分别显示运行状态与启动类型。选中计划任务即可查看程序、完整任务路径和运行时间。 |
| 智能能力(可选) | 智能筛选 / 模型设置 / 残留解释——只建议,不替代你确认 |
产品气质:克制、专业、可后悔——不是「电脑管家」。
- 来源:HKLM64 / HKLM32 / HKCU / Microsoft Store(MSIX),同产品自动去重
- 从 Windows 应用包、卸载记录、MSI 产品或可匹配的本机快捷方式和主程序取图标。
- 决策 chips:大体积 / 最近安装 / 推荐清理 / 无卸载命令 / 商店或桌面
- 搜索、排序、虚拟化大列表;拖放 exe / 安装目录可分析
- 识别 安装类型与关联
- 官方卸载 优先调用软件自带卸载器
- 扫残留 实时概况(可安全清理 / 建议确认 / 将保留)
- 清理报告 已删/失败/跳过 + 实删/保留体积 + 完成度 + 保险箱说明 + 复核结果;可重新扫描该应用
- 仅预览 dry-run;确认时可勾选「清理前创建安全备份」(默认不勾)再删
- 清理前默认尝试创建系统还原点,可在「设置与帮助」中关闭
- 共享运行库(VC++ / .NET 等)默认不勾
- 备份根目录(仅勾选备份时生成):
%PROGRAMDATA%\Remova\Backup\
「还原备份」和「清理历史」在顶部,其余工具可按用途查找或搜索。
- 孤儿残留页、启动项 / 服务 / 计划任务管理;损坏的安装记录与孤儿网络规则面板
- 安装包与更新缓存、专项缓存清理、闲置软件雷达:主列表标注「还有 N 项未显示」(缓存清理另列出读不到的位置)
- 磁盘雷达:只读查看哪些目录占空间;总览为各根合计置顶、子目录按体积排序(系统盘最多 24 行、其他盘与下钻最多 12 行),未能测完的目录标注
≥下限和已检查条目数,下钻列表标注「还有 N 项未显示」,系统盘总览注明仅统计五个已知根 - C 盘空间体检:概览(卷容量、目录链接与死链)、清理与迁移(处置清单,可清理项置顶并可勾选清理,迁移候选交给目录迁移)、组件存储(WinSxS DISM 只读分析)
- 可再生缓存清理:仅限固定布局(更新下载缓存、临时目录、崩溃转储等),确认时明示不创建备份;只删内容、目录保留,被占用文件如实跳过
- 目录迁移(junction):从空目标开始复制,切换前逐文件核对,已有目标文件会保留。切换后可在目标与备份一致时回滚。收尾只删除已验证有一致副本的备份,删除后无法回滚。
- 全局 CLI 包:npm / pnpm / yarn 全局包只读清单;npm 包可在确认后删除(先整包导出到安全备份)
- 系统痕迹与便携应用:ConsentStore 孤儿授权与便携应用候选的只读报告(不过安全评估的类别一律不落地)
- 历史时间线、CSV 导出、安装监控
- 深色 / 浅色 / 跟随系统主题,中文 / English
前往 Releases 下载最新版本:
当前使用手动下载更新,请核对 Release 同页的
SHA256SUMS.txt。每次发布附带SBOM.cdx.json,列出 Windows x64 的 Rust 正常依赖图和 npm 生产依赖。Authenticode 标识 Windows 发布者,由 SignPath 单独配置。应用内更新须显式启用并提供三项更新器签名配置,才生成
latest.json与.sig。MSI 和便携版使用手动下载。发布配置见 签名与发布说明。
| 安装包 | 说明 |
|---|---|
Remova_*_x64-setup.exe |
NSIS 安装程序(推荐) |
Remova_*_x64_zh-CN.msi |
MSI 安装程序(per-machine,仅中文向导;非管理员需 UAC 提权) |
Remova_*_x64-portable.zip |
便携版 zip,解压即用 |
Remova 需要 Windows 10 / 11(x64)和 Microsoft Edge WebView2 Runtime。运行时缺失时,NSIS 和 MSI 安装器会通过内置的 Microsoft 引导程序联网安装。便携版要求启动前已安装运行时。在离线环境使用任一安装包或便携版前,请在联网电脑下载 x64 Evergreen 独立安装程序,转到目标电脑安装运行时。Microsoft WebView2 下载
NSIS 为当前用户安装。安装、升级或卸载时,请直接运行安装程序或卸载程序,无需选择「以管理员身份运行」。
清理系统级应用、Machine PATH、服务或防火墙规则,以及还原到受保护目录时,需要以管理员身份运行 Remova。普通权限下这些条目会逐条失败并报告原因。
自动还原 RSEAL2 备份前会验证整个会话。请在创建备份的同一 Windows 安装中,以创建备份的账户提升为管理员后运行 Remova。
便携试用:可从本机
src-tauri/target/release/remova.exe复制运行;注册表扫描无需安装。用户备份默认在%PROGRAMDATA%\Remova\Backup\。正式分发以 NSIS / MSI 为准。
升级、降级与异常恢复(迁移卡住、备份读不出、清理后找回文件)请按 升级、降级与恢复操作手册 执行;AI、扫描范围与备份的配置位置和数据去向见 配置与隐私说明。
| 工具 | 版本 |
|---|---|
| Rust | ≥ 1.95 |
| Node.js | 22.22.2+(22 系列)、24.15.0+(24 系列)或 26+ |
| Windows | 10 / 11 |
# 前端
npm ci
npm run build
npm run coverage
# 后端
cd src-tauri
cargo test --workspace
# 热点纯函数微基准(可选,仅本地)
cargo bench
# 开发运行
npx tauri dev
# 打包
npx tauri build贡献规范见 CONTRIBUTING.md。
- 真实删除必须经过 UI 确认,并通过
safety门禁检查。 - 分析和清理只使用最近一次服务端扫描的应用身份与路径;HKCU 与 HKLM 的同名记录不会合并,提权状态会拒绝 HKCU 应用的分析、卸载与清理。
- 优先使用仅预览确认列表,再执行清理。
- 备份是尽力而为,不能替代系统备份;备份目录使用私有 ACL(SYSTEM / Administrators / 当前用户)。
- 带备份清理会保留备份完成后新建或变更的文件。备份副本缺失、内容无法校验或源文件含有备份格式无法保存的 NTFS 命名数据流时,受影响的原件会保留。
- 预览显示「可继续还原」时,选回同一备份即可在 Remova 创建且身份一致的目录中补齐缺失项,已有文件会保留。若预览显示「已存在」(包括旧版本留下但无法识别的部分还原目录),先核对已有内容。要在原路径还原冲突项,请将对应内容移到安全位置,再重新预览。
- 1641 待重启期间所有清理与还原入口保持阻断;状态文件损坏时按“待重启”处理(fail-closed)。
- 服务 / 计划任务默认视为高风险,且默认不勾选。
UI React 19 + Vite + TypeScript
壳层 Tauri 2
后端 Rust(注册表 / 文件系统 / 服务 / 任务)
测试 Vitest + cargo test
打包 NSIS / MSI
Remova/
├── src/ # React 前端
├── public/ # 构建时原样复制的静态资源(logo.png)
├── src-tauri/ # Rust 后端与打包配置
├── scripts/ # 构建 / 辅助脚本
├── .github/
│ ├── workflows/ # CI / Release
│ ├── signpath/ # SignPath 签名工件配置
│ └── RELEASE_SIGNING.md
├── SECURITY.md # 安全策略与漏洞私下报告渠道
├── RELEASE-STATUS.md # 发版状态与门槛记录
├── index.html # Vite 入口 HTML
├── package.json # 前端依赖与脚本(版本号唯一源)
├── package-lock.json # 锁定依赖树
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # Vite / Vitest 配置
├── eslint.config.mjs # ESLint 配置
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md # 本文件(中文)
└── README.en.md # English
版本号以
package.json的version为准;Cargo.toml/Cargo.lock/tauri.conf.json/package-lock.json由npm run check-versions对齐。
欢迎 Issue 与 Pull Request:
- Fork 并创建功能分支
- 运行
cargo test --workspace与npm run coverage - 使用 Conventional Commits(
feat:/fix:/docs:…) - 用户可见变更请更新
CHANGELOG.md
详见 CONTRIBUTING.md。
请在审阅清理列表后自行判断风险再执行。备份为尽力而为,不构成完整系统备份或数据恢复保证。