下页、再停留头像
关注
【C#桌面客户端系列学习-1】打包exe,并根据版本号实现自动更新封面图

【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.html文章配图https://blog.csdn.net/qq_25285531/category_13213077.html

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_25285531/article/details/166367596

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--