目录
一、前言
二、主要用到的技术
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