[WPF]程序版本自动更新模块写法(C#,.NET4.5以上)

[WPF]程序版本自动更新模块写法(C#,.NET4.5以上)

代码用于从服务器下载程序并自动更新,需要.NET4.5及以上版本。

相比于其他教程中可用于.NET2.0或3.0版本的代码,本文中引用了一些新的方法,代码量减少。最后面附有完整代码。

简单说一下工作流程:
1. 主程序A调起升级程序B
2. B从服务器获取更新程序列表,打印更新信息。
3. B杀死A进程(此步骤可以放在步骤2~5任意位置)
4. B根据更新信息中指示的地址,下载更新程序包(.zip文件)
5. 解压缩.zip文件到一个新创建的文件夹
6. 将解压后的文件拷贝到原始文件目录,做替换。
7. 删除下载的.zip文件以及解压后创建的文件夹
8. B打开A


首先创建一个新的工程,写升级程序B。界面部分略过,只讲后台代码部分。

  1. 在服务器获取更新信息列表

更新信息列表用于存储版本信息,以及更新说明信息。通常为json或xml文件。本文为json文件。

存储列表信息的类

public class UpdateItem
{
    public string Version { get; set; }  //版本号
    public string UpdateContent { get; set; }  //更新信息
    public string DownloadUri { get; set; }  //更新包的下载地址
    public string Time { get; set; }  //更新时间
    public string Size { get; set; }  //更新包大小
}

获取更新信息使用WebClient.DownloadData(Uri),其中使用Newtonsoft.Json进行json序列化及反序列化。

WebClient client = new WebClient();
byte[] data = client.DownloadData(uri);
//json转为UpdateItem类对象
UpdateInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<UpdateItem>(Encoding.UTF8.GetString(data));

获取更新信息以后在界面上进行输出。
下面介绍一下生成更新信息的json文件并使用FTP上传到服务器的代码。json文件也可以手动写,手动上传。不是重点,不想看可以跳到下一部分。

UpdateItem UpdateInfo = new UpdateItem();
...  //赋值
string json = JsonConvert.SerializeObject(UpdateInfo);
 //连接服务器
F
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值