news 2026/9/24 17:50:39

【C#桌面客户端系列学习-1】打包exe,并根据版本号实现自动更新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C#桌面客户端系列学习-1】打包exe,并根据版本号实现自动更新

目录

一、前言

二、主要用到的技术

1、AutoUpdater.NET

2、Fody.Costura

三、安装相关程序包

1、安装Autoupdater.NET.Official

2、安装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 version="1.0" encoding="UTF-8"?> <item> <version>2.0.0.0</version> <!-- 必须比客户端程序集版本大 --> <url>http://xxxxxx/1.zip</url> <!-- 安装包或zip下载地址 --> <changelog>https://xxxxxx/changelog.html</changelog> <mandatory>true</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路径(<url>http://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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 17:50:04

浚县装修主材下单时点怎么反推?一张倒排表把采购和工序对齐

装修拖期比较隐蔽的一类原因&#xff0c;不是工人磨洋工&#xff0c;是材料没到。工序在前、材料在后&#xff0c;谁都救不回来——瓦工进场了砖还在路上&#xff0c;师傅只能先撤&#xff0c;下一个活儿排期一乱&#xff0c;整条链往后倒。这篇把主材下单时点的推导过程写下来…

作者头像 李华
网站建设 2026/9/24 17:49:23

Python 项目应用:Python 构建“e 起去旅行”网站从入门到实战指南

** 摘要**:本文手把手带你从零搭建一个基于 Flask 的旅行助手全栈项目,涵盖虚拟环境搭建、数据库模型设计、RESTful 接口开发、前端模板渲染、用户注册登录与行程收藏,以及生产环境部署与安全加固。文章提供可直接复制的完整代码,并给出推荐算法、社交分享、离线缓存三个可…

作者头像 李华
网站建设 2026/9/24 17:48:54

【Dify】自动化合同审查与生成应用

智能化合规需求在合同管理领域日益突出。高效、自动的合同审查与生成工具正在成为法律和商务操作的重要基础设施。 本文介绍一套AI赋能的智能合同审查与生成解决方案,覆盖文档上传、内容抽取、法律风险识别、条款优化、结果导出等完整流程。通过模型驱动与自动化处理,大幅提…

作者头像 李华
网站建设 2026/9/24 17:47:55

Agent 消息与事件工程笔记

摘要:LLM 无状态,状态要在端点攒起来、过程要流出去——攒起来的是 Message,流出去的是 Event,这是 agent loop 上两个最基本的数据面。本文把它们拆开讲:各是什么、一轮 loop 里怎么流动、四家框架怎么实现、跨边界怎么靠 MCP / A2A / AG-UI 统一,最后落到工程上怎么用、…

作者头像 李华
网站建设 2026/9/24 17:46:38

第 3 篇 · p2m 内存类型分类

p2m 表项不只记"对应哪个 MFN"&#xff0c;还带一个类型标签&#xff08;p2m_type&#xff09;&#xff0c;决定访问它时的行为。这一篇把 Xen 的 p2m 类型讲透&#xff1a;完整枚举 各自用例&#xff0c;以及它们之上两个容易混淆的"分组/空间"概念——类…

作者头像 李华
网站建设 2026/9/24 17:46:25

Zoom视频会议软件电脑版下载安装教程

概述 Zoom 是一款跨平台云视频会议软件&#xff0c;支持 Windows、macOS、Linux、iOS、Android&#xff0c;提供高清视频会议、屏幕共享、文字聊天、会议录制、虚拟背景等功能。本文讲清电脑版下载安装、权限设置与核心功能。 一、下载与安装 从 Zoom 下载入口 获取安装包&…

作者头像 李华