目录一、前言二、主要用到的技术1、AutoUpdater.NET2、Fody.Costura三、安装相关程序包1、安装Autoupdater.NET.Official2、安装Fody.Costura四、配置版本号五、准备更新用的XML文件六、代码中调用七、制作并上传更新包八、测试是否成功九、注意事项一、前言在桌面应用开发中让用户手动下载安装新版本客户端可能会产生一系列的问题最近在研究怎么通过版本号实现客户端自动更新同时只需要给用户一个打包好的exe即可不需要给一系列的文件。二、主要用到的技术1、AutoUpdater.NET专门为WinForms/WPF设计的轻量级更新库核心逻辑客户端启动时去服务器拉起一个XML这个xml是用来记录新版本的版本号和新版本下载路径对比版本号如果发现有新版本就弹窗提示用户用户确认后下载更新包并完成替换。2、Fody.Costura把依赖的DLL打包和项目一起打包成一个exe文件避免分发给用户时分发一堆dll只需要给一个exe即可。三、安装相关程序包1、安装Autoupdater.NET.Official在VS里我用的VS2022,在解决方案右键选择“管理NuGet程序包”搜索“Autoupdater.NET.Official”并安装。2、安装Fody.Costura同上一步一样搜索“Fody.Costura”并安装。Fody.Costura它的主要功能就是可以单独把生成的exe拿出来可以直接运行比如把bin/Debug/下的1.exe放到任何一个位置或分发给任何一个人只需要给这个exe就可以了不需要再把完整的文件夹给别人。Fody.Costura 的安装会自动引入 Fody 核心库。安装完成后项目根目录会出现FodyWeavers.xml内容默认即可确保包含Costura /节点。四、配置版本号点击解决方案右键 -》属性 -》应用程序 -》程序集信息 -》程序集版本、文件版本。新版本号要大于就版本号新版本自动更新就是根据这里的版本号判断的这一点很重要。我这里旧版本是1.0.0.0稍后新版本是2.0.0.0五、准备更新用的XML文件这个文件也很重要新旧版本号对比、新版本下载路径都在这里面配置。新建一个XML文件我这里取的文件名称是AutoUpdaterTest.xml并把这个文件上传到外网可访问的服务器上。?xml version1.0 encodingUTF-8? item version2.0.0.0/version !-- 必须比客户端程序集版本大 -- urlhttp://xxxxxx/1.zip/url !-- 安装包或zip下载地址 -- changeloghttps://xxxxxx/changelog.html/changelog mandatorytrue/mandatory !-- 是否强制更新 -- /item字段说明version必填项最新版本号必须高于就版本号url必填项新版本更新程序包的下载地址这个域名必须是外网可访问的支持http/https。可以是zip压缩包也可以是安装程序我这里是zip。changelog可选项更新日志链接不填则更新弹窗不显示日志按钮。mandatory可选项是否强制更新设为true时用户无法跳过必须强制更新。六、代码中调用在主窗体Load事件点击UI布局的空白处中添加这样程序在启动时就会自动检查更新。using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using AutoUpdaterDotNET; namespace _1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { AutoUpdater.Start(http://xxx/AutoUpdaterTest.xml); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(您点击了弹窗); } } }主要添加引用“using AutoUpdaterDotNET;”、Form1_Load事件里添加“AutoUpdater.Start(http://xxx/AutoUpdaterTest.xml);”。七、制作并上传更新包1、新版本代码修改好后记得修改新版本的版本号和上面第四步一样。2、把新版本生成exe找到已经生成的exe我的在bin/Debug文件加下名称是1.exe把1.exe压缩直接压缩1.exe外面不要有额外的文件夹层确保解压出来就是1.exe。3、ZIP里的文件名必须和旧版本的名称完全一致。4、将压缩好的1.zip上传到上面xml里写的url路径urlhttp://xxxxxx/1.zip/url这个路径一定要完全一致。八、测试是否成功旧版本属性版本号是1.0.0.0运行旧版本提示更新点击更新下载更新已更新到新版本右键属性已是2.0.0.0了九、注意事项1、两个程序包Autoupdater.NET.Official和Fody.Costura一定要选择对别安装错了2、xml里的信息一定要填对服务器域名外网可访问3、新旧版本的版本号要注意4、新旧版本的文件名要完全一致C#桌面客户端系列学习可浏览专题学习https://blog.csdn.net/qq_25285531/category_13213077.htmlhttps://blog.csdn.net/qq_25285531/category_13213077.html
企业数字化 ERP 产品动态
相关推荐
工厂车间代打卡屡禁不止?一文讲透根因与解决方案 一、问题:代打卡为什么成了工厂考勤的"老大难"在劳动密集型的工厂车间,代打卡几乎是所有 HR 和管理者绕不开的痛点,典型表现有这几类:一人多卡:员工把工牌或门禁卡交给同班组的同事,对方刷两次。… · 2026/9/24 17:50:44
D28 | 向量库管理后台:从 0 搭一个企业级知识库管理平台 文章目录 D28 | 向量库管理后台:从 0 搭一个企业级知识库管理平台 写在前面 一、为什么需要向量库管理后台 1.1 RAG 落地的"最后一公里" 1.2 后台的 5 大核心模块 1.3 选型参考 二、文档摄取流水线:从上传到入库 2.1 流水线设计 2.2 文档状态机 2.3 摄取流水线实现… · 2026/9/24 17:50:37
用Flutter开发鸿蒙应用:运动打卡App移植实战与踩坑记录 1. 为什么我会用Flutter去趟鸿蒙这摊水
1.1 先是"被迫",然后是真香:鸿蒙开发的语言选择 年初接到一个需求:把我们团队维护了好几年的运动健身打卡App移植到鸿蒙平台上。当时第一反应和很多人一样——鸿蒙原生开发基本就是学ArkTS和… · 2026/9/24 18:25:38
多智能体强化学习实验管理:WB接入与高效训练记录指南 1. 从TensorBoard转投W&B:多智能体实验管理最缺的不是图表而是“结构”做多智能体强化学习的人应该都有过这种经历:跑了一个通宵的NAVRL训练,第二天早上满怀期待地打开终端,结果发现日志早就被滚屏冲没了,只记得“… · 2026/9/24 18:25:38
Java仓库管理系统毕设:SSM项目部署避坑与二次开发实战 简介:这套基于SSM的仓库管理系统项目源码,面向计算机相关专业正在做毕业设计的学生,以及需要项目实战练习的Java学习者,既适合作为毕业设计交付物,也适合通过SSM整合案例学习企业级开发流程。系统采用Spring、SpringMV… · 2026/9/24 18:25:38
基于YOLOv8的刀具崩刃检测:训练部署与避坑指南 简介:面向计算机相关专业学生、毕业设计与课程设计开发者,这一基于YOLOv8的工业机床刀具崩刃实时检测项目,聚焦刀具崩刃目标检测场景,提供从模型训练、视频检测到可视化交互的完整方案。包体共8个文件,包括3个Python脚… · 2026/9/24 18:25:38
Java汽车零部件检测管理系统:从源码跑通到二次开发实战 简介:Java汽车零部件检测管理系统源码是一份面向Java学习者与汽车行业软件开发者的完整项目实例,围绕零部件质量检测与管理流程,整合了后端业务逻辑、MVC分层架构、MySQL关系型数据库及Vue前端等核心技术,可帮助读者理解企业级系统… · 2026/9/24 18:25:38
把搜索到下单的八次点击压进一条命令:大麦自动抢票脚本实操手册 把搜索到下单的八次点击压进一条命令:大麦自动抢票脚本实操手册 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
开票后三秒,… · 2026/9/24 18:25:32
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44