Skip to content

v0.2.0 · 清理预览 / 7 天回滚 / 软件卸载

Latest

Choose a tag to compare

@matou1118 matou1118 released this 29 Sep 05:45
· 0 commits to 6193d395fd634d5fb5e28701f4234b5aeac4348e since this release

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,禁商用,可二次开发。