知识大全 .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的绑定 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
详解.NET2.0开发Winform程序经验 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 带有
体验VS.NET2005的winform新功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 年
在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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
Question数据类型charvarcharnvachar的区别()char的长度是国定的最大支持个字节Eg:定义char()即使你插入abc个字节数据库也会在abc后面自动加入个空格以补足个字节c