你的位置:首页 > 软件开发 > ASP.net > WinForm应用程序中实现自动更新功能

WinForm应用程序中实现自动更新功能

发布时间:2015-04-20 16:01:07
WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因程序的bug而带来频繁让用户更新程序的不良影响,就想给ECM增加 ...

WinForm应用程序中实现自动更新功能

 

编写人:左丘文

 

2015-4-20

近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因程序的bug而带来频繁让用户更新程序的不良影响,就想给ECM增加一个get='_blank'>winform自动更新功能,今天在这里,我想与大家一起分享代码,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。

 

1、 首先我们在这里先分析一下其它程序猿的一些基本情况:

相信有许多程序猿都喜欢用Winform做开发吧?!因为Winform相对Webform而言,优点是,功能更强大,编程更方便.但是它的缺点,就是软件的安装及维护是相当麻烦地,要实现软件更新,需要到客户端一台一台地升级。

长期以来,广大程序猿为到底是使用Client/Server,还是使用Browser/Server结构争论不休,在这些争论当中,C/S结构的程序可维护性差,布置困难,升级不方便,维护成本高就是一个相当重要的因素。有很多企业用户就是因为这个原因而放弃使用C/S。然而当一个应用必须要使用C/S结构才能很好的实现其功能的时候,我们该如何解决客户端的部署与自动升级问题?部署很简单,只要点击安装程序即可,难的在于每当有新版本发布时,能够实现自动升级。现在好了,我们的目标很简单,我们希望开发一个与具体应用无关的能够复用的自动升级系统。下面我为大家提供了一套可复用的用C#实现在线升级。这里分为本地在线升级,也可以利用webservice 在线通过互联网与软件开商的服务器在线升级。

 

2、 实现软件自动在线升级的原理

1)         写三个程序,一个是主程序;两个是升级程序;所有升级任务都由升级程序完成

原本只需要一个升级程序,但在这里,由于我们另外还涉及到了,在线与软件供应商服务器更新功能,因此我们这里用到了一个主程序两个升级程序。

2)         很多人实行的原理是将现有版本与最新版本作比较,发现最新的则提示用户是否升级,当然也有人用其它属性比较的,例如:文件大小或者更新日期。我们这里主要利用FileUtil的两个属性SHA1File与MD5File来判断,与服务器之间是否存在版本差异,存在就更新。

3)         我们的程序,刚开始初始版本是我一同事利用了三天时间,大致写了一个框架出来,我是在他的基础上,对其进行了完善,如增加了对文件流的压缩与解压缩功能,方便进行网络的传输,增加了通过webservices的在线更新功能。并将程序做到通用功能,并嵌套到了我们的ECM系统中。

3、 软件更新操作界面:

1)   启动我们的主程序ECM

       WinForm应用程序中实现自动更新功能 

2)   系统会从数据库中检查是否有新版本,点点【否】会直接进入系统,点【是】系统会进入到更新介面:

先择需要更新的内容,点击更新,系统会自动更新相关程序。

     WinForm应用程序中实现自动更新功能 

3)   与软件供应商服务器在线更新介面:

操作类似于在线本地更新一样。

 WinForm应用程序中实现自动更新功能

具体就需要各位好好的自已去调试了。

4、 更新程序的代码:

1)   我们的更新程序是以文件流的形式存放在数据库中,因此我们首先需要为系统数据库增加相关的表,用于存储更新文件。

WinForm应用程序中实现自动更新功能WinForm应用程序中实现自动更新功能--建立相关表SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[SysUpdate]([ID] [int] IDENTITY(1,1) NOT NULL,[FileName] [varchar](250) NULL,[FileVersion] [varchar](50) NULL,[FilePath] [varchar](250) NULL,[FileData] [varbinary](max) NULL,[FileSize] [varchar](250) NULL,[FileDate] [varchar](250) NULL,[FileType] [varchar](50) NULL,[FilesHash] [varchar](max) NULL,[FilesMD5] [varchar](max) NULL,[UpdateBit] [bit] NULL,[RegBit] [bit] NULL) ON [PRIMARY] GOSET ANSI_PADDING OFF--建立插入SP View CodeView CodeView CodeView Code    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    public class HostService : System.Web.Services.WebService            }        #region WebService Post Method            if (ds1.Tables[0].Rows.Count > 0)                for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)                                    strSQL += "null" + ",";                        }                                    strSQL += "null" + ",";                        }            }            return id;        private void InitializeComponent()View CodeView CodeView Code

原标题:WinForm应用程序中实现自动更新功能

关键词:winform

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录