Repository navigation
v0.2.0 — 清理预览、7 天回滚、软件卸载
官网:https://matou1118.github.io/DevCleaner/
0.2.0 是这个项目第一次做删除语义的改动,请先看下面「这次改了什么」。
⚠️ 这次改了什么:文件不再进回收站
v0.1.0 把文件交给 SHFileOperation + FOF_ALLOWUNDO,也就是进 Windows 回收站。
0.2.0 改成移入本地备份目录 %LOCALAPPDATA%\DevCleaner\file_backups\<会话>\:
| v0.1.0 | v0.2.0 | |
|---|---|---|
| 文件删除去向 | Windows 回收站 | 本地备份目录 |
| 恢复方式 | 自己去回收站翻 | 界面里选会话一键回滚 |
| 有效期 | 直到你清空回收站 | 7 天,过期备份启动时自动清除 |
换来的是可审计、可按会话整批回滚、原路径已有文件时不覆盖。
代价是过了 7 天就只能靠系统还原点或文件恢复工具 —— 这一点比回收站弱,
所以界面上、README、站点上都写明了,没有藏着。
app.py 里 safe_delete 保留了无备份时的回收站降级路径(BACKEDUP: 前缀
用来区分实际走了哪条路)。
新增 · 安全
清理预览:确认弹窗在文件列表之前先给分类汇总(条目数 + 空间)和风险分解
(安全 / 需确认),先看清要删什么再决定。批量项逐条列出前 40 项。
系统目录防护:to_recycle_bin 纵深防御,拒删 %SystemRoot%、
%ProgramFiles%、%ProgramFiles(x86)% 下的任何文件。路径取自环境变量而不是
写死 C: —— Windows 装在 D 盘时写死 C 等于没有防护。
新增 · 卸载
软件卸载:读已安装软件列表(带厂商、版本、大小、上次使用、闲置天数),
运行软件自带的卸载程序,结束后自动扫描残留 —— 两个 SOFTWARE 分支、
InstallLocation、%APPDATA%、%LOCALAPPDATA%、Start Menu / 桌面快捷方式,
可一键清理。文件类残留走备份 + 回滚;注册表残留只列出,不自动删。
审计日志:每次清理写 %LOCALAPPDATA%/DevCleaner/clean_history.log,
底栏「历史」按钮查看最近 200 行。
修复
- MSI 制软件全都卸载不了。注册表
UninstallString有一大半是
MsiExec.exe /X{GUID}这种裸 exe 名,而os.path.exists("MsiExec.exe")
恒为False,它们全被误报成「卸载程序不存在」。改为先按PATH解析一次。 -c分类过滤器缺陷:旁路分类(注册表 / Git / npm)现在能正确选中,
且不泄漏其他分类的条目。- 英文模式输出中英混排。
T()是子串替换,0.2.0 新增文案漏收进翻译表,
曾输出过Deleteditems已备份,可通过Rollback恢复。补齐词条,并新增一条
自检:英文模式下T()的输出里不许残留中文。 - 界面文案与实际行为对齐:0.2.0 起文件不走回收站,而副标题和主按钮仍写着
「移入回收站」—— 主按钮是用户判断会发生什么的唯一依据。
验证
76 项自检,CI 在 Python 3.10–3.13 上跑,含真跑 ffmpeg/reg 往返、系统目录
防护(用环境变量指向临时目录做回归)、备份→回滚→校验一致、站点与 WCAG 对比度。
许可
CC BY-NC 4.0 —— 署名 Matou1118,禁商用,可二次开发。