📥 下载:下方 Assets 二选一 ——
MegaDownloader.exe(单文件,双击即用)/MegaDownloader-Revival-win-x86.zip(解压即用)。
升级:关闭旧程序后替换 exe;设置与下载队列保存在%LOCALAPPDATA%\MegaDownloader\,保留下载目录中的.part,已有断点继续兼容。
系统要求:Windows 7 SP1+ · .NET Framework 4.8(Win10 1903+ 系统自带)· 无需管理员权限
补丁版,一句话:同名文件同时下载不再互相写坏;解压不再覆盖同名、同大小的原文件;解压中断后重启会校验并复用已下完成品;在线观看的短 Range 请求不再返回错误字节。
这次修复了什么症状?
- 两个同名文件一起下载,一个报“文件被占用”,另一个报 MetaMAC 校验失败 —— 下载临时文件按任务隔离,同名文件和重复链接都能分别完成
- 解压显示成功,原有同名文件却被替换掉了 —— 不再把“大小相同”当作同一文件,已有原件保留副本;无法保留时明确停止 7z 解压
- 下载已经 100%,却在重命名
README时失败;选了磁盘根目录,文件又存到了别处 —— 无扩展名重名与盘符根路径分别修复 .part被清理后仍从 50% 接着下,最后必报校验失败 —— 断点文件不存在就清零进度,从头重建- 解压中途退出,重启后完整压缩包又下了一遍,还多出
(2)副本 —— 先验证已下载成品,通过后直接复用 - 短 Range 响应看起来正常,播放器拿到的媒体字节却不对 —— 分段到达时也会读够对齐前缀,再解密并返回请求的字节
全部修复明细
📥 下载与断点恢复
- 每个下载任务使用独立的临时文件名,并写入下载队列;重启恢复身份,旧版
文件名.part的已有进度会迁移,避免新旧格式切换丢掉断点 - 成品重命名统一同步。同名文件依次使用空闲的
(n)后缀,文件和同名目录都会避让;不再让两个下载器改写同一.part - 无扩展名文件重名时,只对文件名拆分扩展名,正确得到
README (2);父目录包含点号也不会被误当扩展名 - 磁盘根路径保留尾部分隔符,不再把
I:\变成盘符相对路径I:;UNC 根路径与目录边界检查保留 .part丢失时清零全部分块进度,避免新建空文件后只填后半段,直到最后才报 MetaMAC 错误- 完整断点对应的成品先校验长度与真实 MetaMAC,通过后复用,不再发起整文件的分块传输;损坏成品保留,重新下载另存,不会被冒充为成功
- 保留成品实际使用的重名后缀,文件信息刷新不会再把
same (2).bin改回same.bin - 迟到的下载成功通知不再覆盖正在解压或校验的状态;重置和取消清理只针对本任务的临时文件,保护其他同名任务与已有成品
🗜️ 解压:保留原文件,恢复空目录
- ZIP 与 7z 都不再以“字节数相同”认定是同一压缩包的旧输出:已有文件保留到空闲
(n)后缀,新条目再使用原名 - ZIP 原文件被占用、无法移动时,新条目写入空闲后缀,原文件保持不动
- 7z 无法保留原文件时明确停止;CLI 增加
-aou,防止检查之后新出现的重名文件被覆盖 - ZIP 空目录与多级空目录会实际创建,不再一边丢掉目录、一边报告成功;目录条目同样要通过路径边界检查
▶️ 在线观看:修复 Range 字节错误
- 短请求如
bytes=15-16,上游先送一小段密文、稍后继续发送时,旧代码可能把尚未读入的缓冲区当成已读数据解密,返回 HTTP 206、长度也正确,但内容错误 - 现在将首块需要裁掉的对齐前缀计入读取长度,读够后再解密;只返回实际读到且落在请求区间内的字节
- 覆盖单字节探测、未对齐起点、跨多个缓冲区、分段到达和非完整 AES 尾块
🧪 验证与文档
- 新增可重复运行的回归程序:136 项断言通过,Debug / Release 均构建成功
- 验证正常下载与续传、旧断点迁移、同名并发和重复链接、临时文件持久化与清理、成品复用和损坏保护、ZIP/7z 防覆盖、空目录和 Range 明文字节对照
- 测试使用合成密钥、临时文件与本机 HTTP 服务,无需真实 MEGA 账号;播放器端具体报错文字未作为已实测结果
- 五种语言 README(含两份英文入口)、中英文 CONTRIBUTING、中文 CHANGELOG 与更新检查版本号同步
Full Changelog: v2.5.8...v2.5.9
⭐ 用得顺手的话,欢迎给项目点个 Star —— 遇到问题也欢迎提 Issue,请附上版本、复现步骤和日志。