C# winform程序自动更新小记

最近给程序加了一个自动更新的功能,使用的是一个开源库,也花了点时间拜读了下源码,代码还是很有学习的价值的,这里做下小结。

开源库地址:https://github.com/ravibpatel/AutoUpdater.NET, 有需要的小伙伴可以试试,简单方便!

首先看看自动更新是如何工作的。

自动跟新程序从服务器下载包含更新信息的XML文件。它使用这个XML文件来获取软件的最新版本的信息。如果软件的最新版本比用户电脑上安装的软件的当前版本更强大,那么自动下载软件。NET向用户显示更新对话框。如果用户按下更新按钮来更新软件,则从XML文件中提供的URL下载更新文件(安装程序),并执行刚刚下载的安装程序文件。安装程序将在此之后执行更新。如果你提供zip文件URL而不是安装程序,自动更新城西将把zip文件的内容解压缩到应用程序目录中。

更新界面提供了三个选项,忽略当前的版本,延时更新,立即跟新!

服务器上的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<item>
    <version>2.0.0.0</version> 
    <url>http://rbsoft.org/downloads/AutoUpdaterTest.zip</url>  
    <changelog>https://github.com/ravibpatel/AutoUpdater.NET/releases</changelog>
    <mandatory>false</mandatory>
</item>

这里,version和url是必须提供的,一个最新的版本号,一个是最新版本程序的下载地址。changelog是更新日志,可以不提供,不提供的话,更新界面不会显示,mandatory是是否强制下载,设置为true.将隐藏忽略和延时下载两个按钮。这个节点还可以添加其他属性,   

<mandatory mode="2">true</mandatory>

mode(属性,可选):你可以在强制元素上提供模式属性来改变强制标志的行为。如果你提供“1”作为模式属性的值,那么它也会隐藏更新对话框上的关闭按钮。如果你提供“2”作为模式属性的值,那么它将跳过更新对话框,并自动开始下载和更新应用程序。

<mandatory minVersion="1.2.0.0">true</mandatory>

minVersion(属性,可选):也可以在强制元素上设置minVersion属性。当您提供它时,只有当应用程序的安装版本小于您在这里指定的最小版本时,才会触发强制选项。

使用方式:

 添加引用:using AutoUpdaterDotNET;

 调用启动函数: AutoUpdater.Start("http://rbsoft.org/updates/AutoUpdaterTest.xml");

这里也可以使用Json文件,具体可参考开源库的文档。

源码中涉及到技术在此记录可供参考借鉴:  json字符串的解析,xml序列化,注册表的读和写,压缩文件的解压,网络文件的下载(进度的实时更新)

源码使用了C#7.0的新特性,最好使用VS2017及以上打开,要不然会报错!

一、软件开发环境以及开发工具: 框架:.NET Framework 4.0 工具:Visual Studio 2017 插件:DevExpress 18.1.7 环境:IIS 7 二、实现步骤 (1)在项目中创建一个名为WinformAutoUpdate.APP的Winform窗体应用工程,并将默认的Form1.cs窗体文件重命名为MainFrm.cs作为主程序窗体 创建主程序窗体 (2)在项目中再创建一个名为AutoUpdateTask的Winform应用程序工程,并将默认的Form1.cs窗体文件重命名为AutoUpdateTaskFrm.cs作为更新程序窗体 创建更新程序窗体 (3)在更新程序窗体中放入图上所示的相关控件; 进度条控件用于显示更新进度,放入一个Button按钮控件用于用户根据提示进行操作! 实现思路: 1、将更新程序放入磁盘的目录下面,并将其放在已经发布了的IIS中 当用户在运行主程序窗体并点击左上角的更新按钮时,弹出程序更新窗体,并先自动从IIS中拉取updateList.xml文件,然后与本地程序作对比,检测是否需要升级软件; 如果有新版本发布,则点击“立即更新”按钮,程序将从IIS中拉取新发布的ZIP软件包,并自动解压到主程序目录中,覆盖主程序目录中的相关文件(这里值得注意的是,在解压程序之前,我们需要先结束主程序的进程,不然会因主程序进程正在使用而导致报错,另外,我们用到的插件是ICSharpCode.SharpZipLib.dll第三方动态链接库,网上有现成的,可以直接Down下来用);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破浪征程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值