# UpdateTool **Repository Path**: zbnzbn/update-tool ## Basic Information - **Project Name**: UpdateTool - **Description**: 用来在局域网内部更新winform程序 支持增量更新 无需nas 无需ftp 无需http文件服务器 无需配置防火墙 只用一个程序完成客户端 服务端 的基本功能 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-04-27 - **Last Updated**: 2025-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UpdateTool 局域网程序简易增量更新工具 ## 一、概述 UpdateTool 是一个用于文件更新的工具,包含测试、服务端和客户端三个部分。它可以帮助用户自动检测和更新文件,确保客户端使用的文件与服务端保持一致。 使用Csharp 7.3 开发 为了兼容到win7 用的 .net4.0框架 改善 每次给局域网里的件更新都要每台电脑拆入u盘复制粘贴替换等麻烦 ## 二、功能特性 1. **自动更新**:客户端可以自动检测本地文件与服务端文件的差异,并进行更新。 2. **文件校验**:使用 MD5 算法对文件进行校验,确保文件的完整性。 3. **日志记录**:将程序运行过程中的重要信息记录到日志文件中,方便后续排查问题。 4. **测试功能**:提供测试功能,方便开发和调试。 ## 三、使用方法 ### (一)配置文件 `Update.ini` 在运行程序之前,需要创建 `Update.ini` 配置文件,文件内容示例如下: ```ini business_app=Test.exe server_ip_port=192.168.43.126:8888 listening_port=8888 ignore_regexp=\.pdb$;RobotList.txt$;UpdateServer.exe$;UpdateClient.exe;UpdateTool.exe$;app.publish\\;UpdateTool.log ``` - `listening_port`:服务端监听的端口号。 - `server_ip_port`:服务端的 IP 地址和端口号。 - `business_app`:业务程序的名称。 - `ignore_regexp`:需要忽略的文件或文件夹的正则表达式,多个表达式用分号分隔。 ### (二)运行测试 将程序编译后,将生成的可执行文件命名为 `UpdateTool.exe`,运行该程序即可开始测试。测试过程中,程序会自动创建服务端和客户端的测试目录,并将相关文件复制到测试目录中,然后启动服务端和业务程序。 ### (三)运行服务端 将程序编译后,将生成的可执行文件命名为 `UpdateServer.exe`,运行该程序即可启动更新服务器。服务器会读取配置文件,计算本地文件的 MD5 值,并等待客户端连接。 ### (四)运行客户端 将程序编译后,将生成的可执行文件命名为 `UpdateClient.exe`,运行该程序即可启动更新客户端。客户端会读取配置文件,从服务器获取文件列表,计算本地文件的 MD5 值,并对比服务器和本地的文件列表,若有差异则进行更新。 ## 四、代码结构 ### (一)主程序入口 `Main` 方法是程序的入口,根据当前可执行文件的名称调用不同的功能: - `UpdateTool.exe`:调用 `RunTest` 方法进行测试。 - `UpdateServer.exe`:调用 `RunServer` 方法启动更新服务器。 - `UpdateClient.exe`:调用 `RunClient` 方法启动更新客户端。 - `Test.exe`:模拟业务程序,启动 `UpdateClient.exe`。 ### (二)日志记录 `Console_WriteLine` 和 `Console_Write` 方法用于将消息输出到控制台并记录到日志文件中,`LogToFile` 方法用于将消息追加到日志文件。 ### (三)测试功能 `RunTest` 方法模拟测试员的操作,创建测试目录,复制文件,启动服务端和业务程序。 ### (四)服务端功能 `RunServer` 方法启动更新服务器,读取配置文件,计算本地文件的 MD5 值,启动 TCP 监听器,等待客户端连接。`HandleClient` 方法处理客户端连接,根据客户端的请求返回文件列表或文件内容。 ### (五)客户端功能 `RunClient` 方法启动更新客户端,读取配置文件,从服务器获取文件列表,计算本地文件的 MD5 值,对比文件列表,若有差异则进行更新。 ### (六)辅助方法 - `GetNativeIPv4Address`:获取本地非回环 IPv4 地址。 - `GetServerFileList`:从服务器获取文件列表。 - `GenerateFileList`:生成指定目录下文件的 MD5 值列表。 - `ShouldIgnore`:判断文件是否需要忽略。 - `CalculateMD5`:计算文件的 MD5 值。 - `ReadConfig`:读取配置文件。 - `StopProcess`:停止指定名称的进程。 - `UpdateFiles`:更新本地文件,包括删除多余文件和下载新文件。 - `ParseFileList`:解析文件列表字符串为字典。 - `DownloadFile`:从服务器下载指定文件。 - `GetRelativePath`:获取相对路径。 - `AppendDirectorySeparatorChar`:在路径末尾添加目录分隔符。 ## 五、注意事项 1. 确保配置文件 `Update.ini` 存在且配置正确。 2. 服务端和客户端需要在同一网络环境中,并且客户端可以访问服务端的 IP 地址和端口号。 3. 程序运行过程中会生成日志文件 `UpdateTool.log`,可以查看该文件了解程序的运行情况。 4. 在更新文件时,程序会停止业务程序,请确保业务程序可以正常停止和启动。