修复了一些已知问题
This commit is contained in:
1
Form1.cs
1
Form1.cs
@@ -81,6 +81,7 @@ namespace CheckDownload
|
||||
public Update()
|
||||
{
|
||||
InitializeComponent();
|
||||
_baseDirectory = Application.StartupPath;
|
||||
ConfigureProgressBar();
|
||||
InitializeTempDirectory();
|
||||
}
|
||||
|
52
README.md
52
README.md
@@ -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>
|
||||
```
|
||||
|
||||
这个工具集成了多种故障处理和智能逻辑,旨在提供一个无人值守、高度自动化的文件更新体验。
|
||||
|
||||
## 🚀 主要功能
|
||||
|
||||
|
Reference in New Issue
Block a user