LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】单程序搞定内网 WinForm 自动增量更新,无需额外服务器

admin
2025年5月8日 23:36 本文热度 84

前言

在内部开发和部署 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 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved