前言
在内部开发和部署 WinForm 应用程序时,如何高效地进行程序更新一直是一个常见的痛点。传统的更新方式往往依赖于 NAS、FTP 或 HTTP 文件服务器,不仅需要额外的硬件或软件支持,还可能涉及复杂的网络配置(如防火墙规则调整)。对于许多小型团队或局域网环境来说,这些要求无疑增加了部署和维护的复杂性。
今天推荐一款专为局域网设计的 WinForm 程序更新工具。该工具支持增量更新,大幅减少更新文件的大小和传输时间,同时无需任何额外的服务器或复杂的网络配置。不管是客户端还是服务端功能,都可以通过一个独立的程序完成,真正实现了"零依赖"的更新体验。
项目介绍
UpdateTool是一款用于文件自动更新的工具,包含测试、服务端和客户端三个模块。它能够帮助用户自动检测并更新文件,确保客户端文件与服务端始终保持同步。
该工具使用 C# 7.3 开发,并基于.NET Framework 4.0 构建,以兼容 Windows 7及更高版本操作系统。
传统方式下,在局域网内更新文件通常需要通过U盘逐台电脑进行复制粘贴替换,过程繁琐且耗时。而 UpdateTool解决了这一问题,实现了局域网内文件的自动化更新,极大地简化了维护流程,提高了工作效率。
使用 UpdateTool,大家可以轻松管理和分发文件更新,无需复杂的操作或额外硬件支持,让文件管理变得更加简单高效。
项目特点
1、自动更新
客户端能够自动检测本地文件与服务端文件之间的差异,并智能执行更新操作,确保所有文件始终保持最新版本。
2、文件校验
采用 MD5 算法对文件进行校验,确保传输和更新过程中的文件完整性,防止数据损坏或丢失。
3、日志记录
详细记录程序运行过程中的关键信息至日志文件,便于后续问题排查和维护工作。
4、测试功能
内置测试模块,方便开发人员在开发和调试阶段快速验证功能,提升工作效率。
项目使用
1、配置文件 Update.ini
在运行程序前,需要创建一个名为 Update.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
business_app:指定业务程序的名称(如 Test.exe
)。
server_ip_port:服务端的 IP 地址和端口号(如 192.168.43.126:8888
)。
listening_port:服务端监听的端口号(如 8888
)。
ignore_regexp:需要忽略的文件或文件夹的正则表达式,多个表达式用分号分隔(如忽略 .pdb
文件、日志文件等)。
2、运行测试
编译程序后,将生成的可执行文件命名为 UpdateTool.exe
。
运行该程序即可启动测试模式。
测试过程中:
程序会自动创建服务端和客户端的测试目录。
将相关文件复制到测试目录中,并启动服务端和业务程序以模拟更新流程。
3、运行服务端
编译程序后,将生成的可执行文件命名为 UpdateServer.exe
。
运行该程序即可启动更新服务器:
服务器会读取 Update.ini
配置文件。
计算本地文件的 MD5 值并建立文件列表。
启动监听,等待客户端连接。
4、运行客户端
编译程序后,将生成的可执行文件命名为 UpdateClient.exe
。
运行该程序即可启动更新客户端:
客户端会读取 Update.ini
配置文件。
从服务器获取文件列表,并计算本地文件的 MD5 值。
对比服务器与本地文件列表,若发现差异,则自动下载并更新文件。
项目框架
1、主程序入口
Main
方法是程序的入口点,根据当前可执行文件的名称动态调用不同的功能模块:
UpdateTool.exe:调用 RunTest
方法,用于测试环境的模拟。
UpdateServer.exe:调用 RunServer
方法,启动更新服务器。
UpdateClient.exe:调用 RunClient
方法,启动更新客户端。
Test.exe:模拟业务程序,自动启动 UpdateClient.exe
。
2、日志记录
提供日志记录和控制台输出功能:
Console_WriteLine 和 Console_Write:将消息同时输出到控制台并记录到日志文件中。
LogToFile:将日志信息追加写入日志文件,便于后续问题排查。
3、测试功能
RunTest
方法用于模拟测试流程:
创建服务端和客户端的测试目录,并复制相关文件。
启动服务端和业务程序,验证更新功能是否正常。
4、服务端功能
RunServer
方法负责启动更新服务器:
读取配置文件,计算本地文件的 MD5 值并生成文件列表。
启动 TCP 监听器,等待客户端连接。
HandleClient 方法处理客户端请求,返回文件列表或文件内容。
5、客户端功能
RunClient
方法实现客户端的核心逻辑:
读取配置文件,从服务端获取文件列表。
计算本地文件的 MD5 值并与服务端文件列表进行对比。
若发现差异,自动下载新文件或删除多余文件,完成更新。
6、辅助方法
提供一系列工具方法,支持核心功能的实现:
GetNativeIPv4Address:获取本机非回环的 IPv4 地址。
GetServerFileList:从服务端获取文件列表。
GenerateFileList:生成指定目录下所有文件的 MD5 值列表。
ShouldIgnore:根据正则表达式判断文件是否需要忽略。
CalculateMD5:计算文件的 MD5 值,确保文件完整性。
ReadConfig:解析配置文件,提取运行参数。
StopProcess:停止指定名称的进程。
UpdateFiles:更新本地文件,包括删除多余文件和下载新文件。
ParseFileList:将文件列表字符串解析为字典格式。
DownloadFile:从服务端下载指定文件。
GetRelativePath:获取文件的相对路径。
AppendDirectorySeparatorChar:在路径末尾添加目录分隔符,确保路径正确性。
注意事项
1、配置文件要求
确保 Update.ini
配置文件存在且内容正确。错误的配置可能导致程序无法正常运行。
2、网络环境要求
服务端和客户端需处于同一网络环境中,且客户端能够正常访问服务端的 IP 地址和端口号。请确保网络连接畅通,避免因防火墙或网络限制导致通信失败。
3、日志文件查看
程序运行过程中会生成日志文件 UpdateTool.log
,记录关键操作和运行状态。如遇问题,可通过查看日志文件快速定位原因。
4、业务程序管理
在更新文件时,程序会自动停止业务程序(如 Test.exe
)。请确保业务程序支持正常的停止和启动操作,以避免更新过程中出现异常。
项目源码
Gitee:https://gitee.com/spdf00/update-tool
总结
以上仅展示了UpdateTool 局域网程序简易增量更新工具的部分功能。更多实用特性和详细信息,请大家访问项目源码。
希望通过本文能为 WinForm 应用程序自动更新开发方面提供有价值的参考。
阅读原文:原文链接
该文章在 2025/5/9 9:48:17 编辑过