修复了一些已知问题

This commit is contained in:
2025-06-30 00:54:16 +08:00
parent 1c2582603a
commit d10a3ba3ab
2 changed files with 51 additions and 2 deletions

View File

@@ -81,6 +81,7 @@ namespace CheckDownload
public Update()
{
InitializeComponent();
_baseDirectory = Application.StartupPath;
ConfigureProgressBar();
InitializeTempDirectory();
}

View File

@@ -1,6 +1,54 @@
# CheckDownload - 智能文件更新程序
# CheckDownload - 智能文件更新
一个功能强大的文件更新与同步工具,支持多种云存储平台,具备完整的文件验证和智能解压功能
这是一个C#编写的高效、智能的文件更新与下载工具。它被设计用于自动比较本地文件与服务器上的文件清单,并只下载有变动或缺失的文件,同时具备诸多高级功能以确保更新过程的稳定与顺畅
## 核心功能
- **MD5校验更新**:通过比较本地与远程服务器上的 `md5.json` 文件,精确识别需要更新的文件,实现增量更新,节省带宽和时间。
- **多下载源支持**
- **阿里云OSS**:作为主要的稳定文件存储。
- **123网盘**作为备用下载链路通过动态生成鉴权URL进行下载。
- **智能基准目录检测**:程序能够根据 `md5.json` 中的文件结构,自动定位项目的主目录,确保即使程序被移动到子文件夹内,文件也能被更新到正确的位置。
- **并发下载与失败重试**
- 支持多线程并发下载,大幅提升下载效率。
- 内置下载失败自动重试机制,应对临时的网络波动。
- **IP直连与DNS容灾**当通过域名访问下载服务器失败时程序会自动尝试通过备用DNS服务解析IP地址并直接使用IP进行连接极大地提高了在复杂网络环境下的下载成功率。
## 高级特性与处理逻辑
- **智能解压 `tim.7z`**
- **精确进程控制**:在更新完成后,如果找到 `tim.7z` 压缩包,程序会先将其内容解压到一个临时隔离目录。
- **条件判断**:仅当在解压内容中检测到 `tim.dll` 时,程序才会去关闭正在运行的 `tim.exe` 进程,以避免文件占用。
- **安全覆盖**:完成上述检查和操作后,再将所有文件移动到最终的目标位置。这个过程避免了不必要地中断用户正在运行的程序。
- **自动设置管理员权限**:对于从 `tim.7z` 中解压出的所有 `.exe` 可执行文件程序会自动在Windows注册表中为其添加"以管理员身份运行"的兼容性设置,确保这些程序拥有足够的权限来正常工作。
- **处理文件占用**
- **自动解锁**在移动文件时如果目标文件被占用程序会先尝试等待1秒后重试。
- **下次启动时替换**:如果文件仍然被占用,程序会自动创建一个批处理脚本 (`.bat`),该脚本会在主程序退出后运行,从而在系统下次启动或空闲时完成文件的替换。
- **特定进程的自动关闭**
- 在下载任何 `.exe` 文件之前,程序会先查找并结束同名的正在运行的进程。
- 如果更新列表中包含 `tim.dll`,程序会提前结束 `tim.exe` 进程,以防止文件锁定。
- **数据库文件豁免**:程序在进行文件比较时,会自动跳过 `.db``.db3` 结尾的数据库文件,防止因这些文件频繁变动而导致的错误更新。
- **启动稳定性**:修复了在程序启动阶段可能因目录路径未初始化而导致的严重错误 (`ArgumentNullException`),确保了程序的健壮性。
## 用户界面
- **实时进度显示**:通过进度条、已完成数量/总数、下载速度等信息,清晰地展示更新进度。
- **简洁的状态反馈**:界面只显示当前正在处理的文件名等核心信息,避免被冗长的日志刷屏。
- **友好的错误提示**:当发生严重错误时,会弹出简明扼要的错误信息窗口,而不是难以理解的完整堆栈跟踪。
- **自动定位与退出**:窗体启动时会自动停靠在屏幕右下角,更新完成后会自动关闭,对用户干扰极小。
## 配置
程序的核心参数(如最大并发下载数、重试次数等)可以通过 `App.config` 文件进行调整。
```csharp
// App.config 示例
<appSettings>
<add key="MaxConcurrentDownloads" value="4" />
<add key="MaxDownloadRetries" value="2" />
</appSettings>
```
这个工具集成了多种故障处理和智能逻辑,旨在提供一个无人值守、高度自动化的文件更新体验。
## 🚀 主要功能