知识大全 .net winform软件自动更新

Posted 文件

篇首语:没有失败,只有暂时停止成功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .net winform软件自动更新相关的知识,希望对你有一定的参考价值。

  关于 NET windows软件实现自动更新 本人今天写了一个DEMO 供大家参考

  大家先看下效果图

  

  主要涉及到两个方面

   更新软件主项目和DLL文件

   升级包自身的更新

  

      一个项目通常包括主项目和类库项目 主项目就是启动项目 以 exe结尾 类库项目主要是DLL 简单的说更新就是将软件本地的主项目和类库项目进行更新

  可以采用将最新的软件放到一个远程服务器上 然后每次启动本地软件时候 检查如果有更新 就从服务器上下载最新的 EXE文件和DLL文件

  来替换本地的DLL文件和exe文件

  实现思路 在本地和服务器上各放一个XML文件 里面记录了软件版本号 发布日期 要更新的DLL等一些信息 如果发现本地软件的版本号和服务器上的不相等 或者

  本地软件中的类库项目的发布时间比服务上的晚 就开始下载服务器上的文件 替换掉本地的文件

  XML格式如下

  <?xml version= encoding= utf ?> <AutoUpdater> <AppName>WinUpdate</AppName> <ReleaseURL>;/ReleaseURL> <ReleaseDate> / / : : </ReleaseDate> <ReleaseVersion> </ReleaseVersion> <MinVersion> </MinVersion> <UpdateDes> 添加打印菜单 增加DLL 增加关于模块 </UpdateDes> <ApplicationStart>WinUpdate exe</ApplicationStart> <ShortcutIcon>ico</ShortcutIcon> <Releases> <File name= AboutForm dll date= / / : : size= /> </Releases> </AutoUpdater>

  

  public static void DownloadFile(string localFolder string remoteFolder string fileName ProgressBar bar Label lblSize) string url = remoteFolder + / + fileName; string path = localFolder+ fileName; string dir = Path GetDirectoryName(path); if (!Directory Exists(dir)) Directory CreateDirectory(dir); WebRequest req = WebRequest Create(url); WebResponse res = req GetResponse(); if (res ContentLength == ) return; long fileLength = res ContentLength; string totalSize = FormatFileSizeDescription(bar Maximum); using (Stream srm = res GetResponseStream()) var srmReader = new StreamReader(srm); var bufferbyte = new byte[fileLength]; int allByte = bufferbyte Length; int startByte = ; while (fileLength > ) int downByte = srm Read(bufferbyte startByte allByte); if (downByte == ) break; ; startByte += downByte; allByte = downByte; int progress = bar Value + downByte; progress = progress > bar Maximum ? bar Maximum : progress; bar Value = progress; lblSize Text = string Format( 已完成 / FormatFileSizeDescription(progress) totalSize); var fs = new FileStream(path FileMode OpenOrCreate FileAccess Write); fs Write(bufferbyte bufferbyte Length); srm Close(); srmReader Close(); fs Close();

   关于升级包自身的更新 采用如下思路 在服务器上放置一个TXT文件 里面存放著升级包的版本号 每次本地软件启动的时候

  读取服务器上TXT文件的版本号和本地升级包的版本信息进行比较 如果不同 就从服务器上下载升级包

  关于下载本项目都是使用WebClient进行完成的

  自己可以采用如下方式进行测试

  首先 在你的IIS下面建立一个虚拟目录   此目录用来放置要更新的文件 内容如下

  

   ReleaseList xml和 文件夹主要是实现软件更新

  ReleaseList xml存放了需要更新的内容 文件夹存放了需要更新的类库和文件

     AutoUpdate exe UpdaterVerson txt这两个文件实现的升级包自身进行更新

  AutoUpdate exe是升级包 UpdaterVerson txt存放的是升级包的版本号

cha138/Article/program/net/201311/13607

相关参考

知识大全 .NET的winform中listview的绑定

.NET的winform中listview的绑定  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 详解.NET 2.0开发Winform程序经验

详解.NET2.0开发Winform程序经验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  带有

知识大全 体验VS.NET 2005的winform新功能

体验VS.NET2005的winform新功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  年

知识大全 在C#中使用LOG4NET(winform程序)

在C#中使用LOG4NET(winform程序)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!下载

知识大全 .net WinForm用户控件开发:用户控件复杂属性设置

.netWinForm用户控件开发:用户控件复杂属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 .net WinForm用户控件开发:带按钮的textbox控件

.netWinForm用户控件开发:带按钮的textbox控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 .net WinForm用户控件开发:用户控件下拉式属性设置

.netWinForm用户控件开发:用户控件下拉式属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 .net WinForm用户控件开发:用户控件的基本属性设置

.netWinForm用户控件开发:用户控件的基本属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 .net WinForm用户控件开发:用户控件弹出式属性设置

.netWinForm用户控件开发:用户控件弹出式属性设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 给经验不足.net软件面试童鞋们的tips

Question数据类型charvarcharnvachar的区别()char的长度是国定的最大支持个字节Eg:定义char()即使你插入abc个字节数据库也会在abc后面自动加入个空格以补足个字节c