目前我们做的上位机项目还是以Winform为主,在实际应用过程中,可能还会出现一些细节的修改。对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己来进行更新使用,会大大增加项目的便捷性。

01.自动更新整体思路

今天给大家介绍一下如何基于C#实现WinForm自动更新的一种方式,这种方式长期应用在项目中,提供了很多帮助,也节约了大量的时间成本,并且也使用在CMSPro软件中,整体流程如下图所示:

图表 1自动更新流程

02.实现说明

通过上图,可以发现这种方式是基于打包文件的方式实现的,好处在于整体打包下载,即使中途出现网络中断也不会有任何影响,当然相比于那种单个文件更新的方式,可能每次耗时会多一些,但是由于更新并不是一个频繁操作的过程,这个时间是可以接受的。

(1)首先对于项目是否启用自动更新,是通过配置的方式实现的,在实际开发中,可以使用手动更新和自动更新两种方式,当启用自动更新时,每次启动应用程序都会与服务器版本号做下比较,判断是否执行自动更新的流程。

图表 2自动更新界面

(2)对于手动更新,可以通过点击,弹出一个手动更新窗体,如下图所示:

图表 3手动更新界面

(3)对于服务器路径、本地版本号等信息都是通过本地配置文件存储的,因此本地需要有一个LocalVersion的配置文件,具体用什么形式,可以自由选择,Ini、Txt、Xml、Json都可以,如下图所示:

图表 4本地配置文件参考

(4)服务器侧也会有一个配置文件,形式自由选择,应该包含以下信息:当前服务器版本号、最新版本的程序包、该版本是否更新、该版本更新内容等信息,同时如果有新版本,应该将新版本的文件放到指定路径下,保证最新版本包的这个路径是有效路径。

图表 5服务器配置文件参考

(5)上位机通过将服务器的最新版本号与本地的版本号做对比,如果服务器的版本号较大,说明服务器有更新版本,因此,会根据最新版本包的地址进行下载,这里采用的是zip文件,下载过程根据网络及实际情况可能会耗时,因此上位机侧应该做个进度条,让用户知道下载的进度情况,同时对于每一步的状态也应该通过图标的方式来进行显示,让用户明确更新的进度情况。

图表 6自动更新流程

(6)更新完成后,系统会自动重启新的应用程序,可以看到软件从之前的5.3.5版本升级到最新的6.0.0版本。

图表 7更新结果

03.整体总结

本文主要工控上位机进行自动更新的流程做了一个整体介绍,主要是介绍流程为主,给大家分享一下实现的整体思路,毕竟每个人的实现方式都可能有所不同,大家也可以在此基础上增加一个新的功能,给自己的上位机软件增加一点特色的同时,也给自己提供了便捷一下升级的过程的话,可以通过关注本公众号:dotNet工控上位机,并发送关键词:CMSPro,下载之后安装运行,便会直接进入版本升级的过程。

公众号:thinger_swj

WinForm通用自动更新AutoUpdater项目实战的更多相关文章

  1. WinForm通用自动更新器AutoUpdater项目实战

    一.项目背景介绍 最近单位开发一个项目,其中需要用到自动升级功能.因为自动升级是一个比较常用的功能,可能会在很多程序中用到,于是,我就想写一个自动升级的组件,在应用程序中,只需要引用这个自动升级组件, ...

  2. winform 通用自动更新程序

    通用自动更新程序 主要功能: 1. 可用于 C/S 程序的更新,集成到宿主主程序非常简单和配置非常简单,或不集成到主程序独立运行. 2. 支持 HTTP.FTP.WebService等多种更新下载方式 ...

  3. Winform开发框架之通用自动更新模块(转)

    在网络化的环境中,特别是基于互联网发布的Winform程序,程序的自动更新功能是比较重要的操作,这样可以避免挨个给使用者打电话.发信息通知或者发送软件等,要求其对应用程序进行升级.实现程序的自动更新, ...

  4. Windows程序通用自动更新模块(C#,.NET4.5以上)

    本通用自动更新模块适合所有Windows桌面程序的自动更新,不论语言,无论Winform还是wpf. 一.工作流程:1. 主程序A调起升级程序B2. B从服务器获取更新程序列表,打印更新信息.3. B ...

  5. 使用 advanced installer 为 winform 做自动更新

    原文:使用 advanced installer 为 winform 做自动更新 advanced installer 是一款打包程序,基于 windows installer 并扩展了一些功能,比如 ...

  6. C#[WinForm]实现自动更新

    C#[WinForm]实现自动更新 winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,面对这个实际问题,在最近的一个小项目中,本人设计了一个 ...

  7. winform实现自动更新并动态调用form实现

    winform实现自动更新并动态调用form实现 标签: winform作业dllbytenull服务器 2008-08-04 17:36 1102人阅读 评论(0) 收藏 举报  分类: c#200 ...

  8. .net winform软件自动更新

    转载自 http://dotnet.chinaitlab.com/DotNetFramework/914178.html 关于.NET windows软件实现自动更新,本人今天写了一个DEMO,供大家 ...

  9. C# WINFORM的自动更新程序

    自动更新程序AutoUpdate.exe https://git.oschina.net/victor596jm/AutoUpdate.git 1.获取源码 http://git.oschina.ne ...

随机推荐

  1. Java Concurrent包初探

    同步容器: Vector/Hashtable:jdk1.0就已经存在,jdk1.2改写实现List/Map接口.作为ArrayList/HashMap在并发场景中的替代类出现.注意:Hashtable ...

  2. Django之ORM多表关系创建

    ORM模型多表逻辑创建: 以图书和作者关系模型为例: models.py from django.db import models ''' 一本书只能被一个出版社出版; 一个出版社可以出版多本书; 一 ...

  3. POJ1015

    题目链接:http://poj.org/problem?id=1015 大概题意: 法庭要挑选m人陪审团.先随机挑选n个公民,对于每个公民,控辩双方都有各自的“喜好度”p[ ] 和 d[ ],法庭要尽 ...

  4. jdk编译java文件时出现:编码GBK的不可映射字符

    出现此问题的几种解决办法: 1.cmd下使用javac编译java文件 如: javac test.java 解决办法:编译时加上encoding选项 javac -encoding UTF-8 te ...

  5. 【Nginx】centos7 yum命令安装nginx

    安装nginx 首先我们需要使用root用户进行操作 第一步:添加nginx存储库 sudo yum install epel-release 出现如下图说明成功: 第二步:安装nginx sudo ...

  6. cp: 无法创建普通文件 : 文件已存在

    背景 碰到一个偶现的编译出错问题,如图 报错的信息是 cp: 无法创建普通文件"xxx": 文件已存在 排查原因 看了下 Makefile,这句非常简单,就是 cp ./xxx . ...

  7. 【Mac+Wind7】pytest + allure生成定制报告

    一.升级Powershell(windows7及以上版本默认自带.其实普通的CMD命令行工具够用了) 我是Win7默认带的pw1.0,太古老了升级一下,地址如下,选择与自己windows版本匹配的连接 ...

  8. 什么是cookie?

    cookie是什么? 其实cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证,你电脑上的cooki ...

  9. [SD心灵鸡汤]007.每月一则 - 2015.11

    1.不要因为世界太过复杂,而背叛了你的单纯. 2.人的一生要疯狂一次,无论是为一个人,一段情,一段路途或一个梦想. 3.时间真的很神奇,你永远不知道它会如何改变你.换句话说:以前难吃的蔬菜.苦涩的啤酒 ...

  10. 【JVM】堆体系结构及其内存调优

    堆体系结构 一个JVM实例只存在一个堆内存,堆内存的大小是可调节的.类加载器读取类文件后,需要把类.方法.常量.变量放在堆内存中,保存所有引用类型的真实信息,以方便执行器指向,堆内存分为三个部分:年轻 ...