前言

做客户端(C/S)系统开发的人都会遇到软件的自动更新;系统发布后怎样自动的更新程序?

①更新程序与任何宿主程序是完全独立的;只要在主程序里面启动更新程序就行了;

②更新程序也是一个可执行文件,在启动的时候可以设置是否是自动更新和是否是手动更新;

③有的程序必须要求用户进行更新才能继续使用,所以程序自动更新是有必要的;

④手动更新就是用户可以随时更新程序,不需要严格的控制版本问题;

自动更新的目的就是将服务器上的更新文件拷贝到本地执行目录中,并且覆盖本地同名的文件;流程很简单,但是实现起来有几个地方需要注意:

①大批量的更新文件怎么下载到本地来,有多个更新文件在下载过程中如果网速慢的情况下可能出现丢包、丢文件等情况;

【一种实现是将多个文件通过ICSharpCode.SharpZipLib组件进行打包,这样可以省很多事。】

②下载到本地了,怎么覆盖原有的同名文件;

【一种实现是先同名的文件的支持删除,然后解压缩;这个过程需要临时保存删除的文件,防止操作失败程序无法启动,要注意有事务性的原理;】

③如果更新的文件不只是单单的文件可能还有一些文件夹;

【一种实现是如果存在同名的文件夹,直接递归的删除,然后将其解压缩到目录中;由于压缩包解压后的顶级目录是压缩文件的名称,所有在复制的过程中需要注意目录的层次关系;】

为了部署方便建议先实现一个部署文件的工具,将所有的文件直接打包在里面同时生成服务器端的版本信息文件,效果如下:

工具生成两个文件,一个是版本文件一个是更新包;利用这个工具就很方便的实现了对文件进行压缩、生成HASH值、版本文件、更新地址等信息,如下所示:

升级信息文件中保存着当前本地的版本号、服务器的更新包文件、更新包配置文件地址、宿主程序的名称,需要宿主的名称就能在更新的时候将宿主程序重进程中枚举出来然后关掉,这样就不影响我们更新了。

一、实现效果

二、实现思路

①将客户端程序文件都放在一个文件夹中,对这个文件夹进行整体压缩成一个升级包【注意:如果要修改压缩后文件名称,请修改包含整个客户端程序文件的文件夹名称】。

②填写软件升级包的【程序名称、版本号、更新包文件地址、更新包配置文件地址】信息,然后生成对应该升级包的升级配置信息文件;提供给WebApi接口使用。

三、升级包制作程序

①C#实现自动更新之(新版程序升级包制作)工程源码下载

②C#实现自动更新之(简易客户端示例)工程源码下载

③C#实现自动更新之(旧版程序升级包制作)项目工程下载

④gif动态加载图和动态表情包的制作_xiaochenXIHUA的博客-CSDN博客

⑤C#实现自动更新之(简易WebApi接口程序的制作)

⑥C#实现自动更新之(独立的更新程序)

C#实现自动更新之(程序升级包制作)相关推荐

  1. c#自动更新+安装程序的制作

    一.自动更新的实现 让客户端实现自动更新,通常做法是在客户端部署一个单独的自动更新程序.主程序启动后,访问服务端,检查配置文件是 否有更新版本,有更新版本就启动更新程序,由更新负责下载更新版本,并更新 ...

  2. Mac使用技巧:在 iPhone 或 iPad 上自动更新应用程序

    如何在 iPhone 或 iPad 上自动安装应用程序更新?按照本提示中的步骤操作,以便您可以自动下载和安装应用程序更新. 在 iOS 中自动更新应用程序 您可以在iPhone和iPad上自动安装应用 ...

  3. C# 实现软件自动更新升级程序

    Update.asmx仅提供一个功能,就是检测是否需要更新,在需要更新的时候就返回一个更新地址,通常情况下返回的地址就是Download.ashx,而在某些特殊情况下,也可以修改服务端使之从其他Url ...

  4. 通过C#中的在线文件自动更新应用程序

    目录 介绍 背景 使用代码 兴趣点 本文介绍如何在不使用ClickOnce的情况下为您的应用程序提供一键更新或自动更新功能. 下载演示项目-586.48 KB 下载源-1.13 MB 下载Readme ...

  5. 美剧自动更新下载程序(需要迅雷vip会员的离线下载功能)

    好久没上,人都变的懒了...要逐渐把Blog捡起来了!最近接触到.Net,学习之余写一个自己一直想写的小工具,一是练练手,二是希望能方便更多的人,也希望能跟大家多交流,交流. 软件的功能是自动从网站上 ...

  6. 自动生成考勤表_可自动变色的考勤表,逢周末自动更新,你会制作吗?

    员工考勤表对于许多职场HR来说,应该是再熟悉不过.一般情况下的考勤表都是按照月份进行统计,比如说11月分1-30号每天会对人员出勤情况进行登记.为了方便我们对表格的查看,我们经常会看到周末两天的单元格 ...

  7. 百度SEOB2B/论坛/网站自动更新/发布程序

    下载地址: http://www.bytepan.com/yEyJF4huQZZ 使用说明: 双击setup.exe安装程序 使用软件,必须是windows xp以上系统,且安装了.NET Frame ...

  8. 手机android怎么关闭自动更新,如何停止Android手机上的应用程序自动更新

    有几个原因可以阻止Play Store自动更新应用程序. 也许新的更新破坏了功能,或者您需要跟踪您的数据使用情况,并且不想通过蜂窝数据LIM. 不管是什么原因,这里是如何阻止自动更新发生在你的Andr ...

  9. 用C#实现软件自动更新

    IT实验室 1 前言 长期以来,广大程序员为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论当中,C/S结构的程序可维护性差,布置困难,升级不方便,维 ...

最新文章

  1. 汇编: 在代码中安排自己定义的数据,栈空间
  2. 在html中写typescript,5分钟上手TypeScript
  3. go语言中map的使用
  4. 十年硬件老司机,结合实际案例,带你探索单片机低功耗设计!
  5. 再有人问你volatile是什么,把这篇文章也发给他。
  6. Openlayers 3计算长度和面积
  7. Android SQLite实现query顺序、倒叙查询
  8. 开启JAVA死锁之迷
  9. socket编程详解,转自http://www.sme-cn.com:82/archives/669
  10. 区块链 怎么设置区块最大交易容量
  11. 【nodejs】waitFor is deprecated
  12. 西门子逻辑运算指令_西门子plc 算术、逻辑运算指令
  13. vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次?
  14. layui table 表头合并_LayUI Table复杂表头实现
  15. 数据挖掘简介(摘自维基百科)
  16. 保研/面试复习-数据结构与算法-万字总结(近三万字)
  17. c语言体重指数怎么算_107股票信息网,股票涨3个点怎么算,股市行情今日大盘上证指数走势图...
  18. 编码器的分类、作用、线制及其接线方法—基础补充
  19. 第3章 天墉城有仙人
  20. js百度地图计算点与折线最短距离

热门文章

  1. result returns more than one elements 解决办法
  2. BI数据分析专业词汇整理(1/9)
  3. 罗杰斯:不看好房地产股票 最佳投资是大宗商品
  4. AD设计PCB新手入门
  5. linux桌面 仿android,Ubuntu粉丝必备!仿Ubuntu锁屏App体验
  6. Pycharm以及cmd调用Anaconda已配置环境的方法
  7. IBPS平台应用于南方电网总部运营管控平台
  8. CVPR2020-对偶回归与SISR | Closed-loop Matters:Dual Regression Networks for Single Image Super-Resolution
  9. Android Studio 微信分享功能(包括可以分享到朋友圈,分享到朋友)
  10. 机器学习-无监督学习-聚类:聚类方法(一)--- k-Means(k-均值)算法,k-Means++算法【使用最大期望值算法(EM算法)来求解】