.net winform软件自动更新
来源:互联网 发布:unity3d入门教程视频 编辑:程序博客网 时间:2024/05/19 22:03
关于.NET windows软件实现自动更新,本人今天写了一个DEMO,供大家参考。
大家先看下效果图:
主要涉及到两个方面
1. 更新软件主项目和DLL文件
2.升级包自身的更新
1. 一个项目通常包括主项目和类库项目,主项目就是启动项目,以.exe结尾,类库项目主要是DLL, 简单的说更新就是将软件本地的主项目和类库项目进行更新。
可以采用将最新的软件放到一个远程服务器上,然后每次启动本地软件时候,检查如果有更新,就从服务器上下载最新的.EXE文件和DLL文件,
来替换本地的DLL文件和exe文件
实现思路:在本地和服务器上各放一个XML文件,里面记录了软件版本号,发布日期,要更新的DLL等一些信息,如果发现本地软件的版本号和服务器上的不相等,或者
本地软件中的类库项目的发布时间比服务上的晚,就开始下载服务器上的文件,替换掉本地的文件。
XML格式如下
<?xml version="1.0" encoding="utf-8"?><AutoUpdater> <AppName>WinUpdate</AppName> <ReleaseURL>http://127.0.0.1/webdown/</ReleaseURL> <ReleaseDate>2012/3/1 10:42:34</ReleaseDate> <ReleaseVersion>1.0.1.99</ReleaseVersion> <MinVersion>1.0.1.88</MinVersion> <UpdateDes> 1、添加打印菜单 2、增加DLL 3、增加关于模块 </UpdateDes> <ApplicationStart>WinUpdate.exe</ApplicationStart> <ShortcutIcon>ico</ShortcutIcon> <Releases> <File name="AboutForm.dll" date="2012/2/21 10:07:31" size="39" /> </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 == 0) 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 = 0; while (fileLength > 0) { int downByte = srm.Read(bufferbyte, startByte, allByte); if (downByte == 0) { break; } ; startByte += downByte; allByte -= downByte; int progress = bar.Value + downByte; progress = progress > bar.Maximum ? bar.Maximum : progress; bar.Value = progress; lblSize.Text = string.Format("已完成{0}/{1}", FormatFileSizeDescription(progress), totalSize); } var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write); fs.Write(bufferbyte, 0, bufferbyte.Length); srm.Close(); srmReader.Close(); fs.Close(); } } }
2.关于升级包自身的更新,采用如下思路,在服务器上放置一个TXT文件,里面存放着升级包的版本号,每次本地软件启动的时候,
读取服务器上TXT文件的版本号和本地升级包的版本信息进行比较,如果不同,就从服务器上下载升级包。
关于下载本项目都是使用WebClient进行完成的。
自己可以采用如下方式进行测试
首先,在你的IIS下面建立一个虚拟目录:http://127.0.0.1/webdown ,此目录用来放置要更新的文件,内容如下
1.ReleaseList.xml和1.0.4.98文件夹主要是实现软件更新
ReleaseList.xml存放了需要更新的内容。1.0.4.98文件夹存放了需要更新的类库和文件
2. AutoUpdate.exe,UpdaterVerson.txt这两个文件实现的升级包自身进行更新.
AutoUpdate.exe是升级包,UpdaterVerson.txt存放的是升级包的版本号
将以上内容部署到IIS下面
本代码使用VS2008进行开发,
DEMO下载
http://download.csdn.net/detail/zx13525079024/4167121
- .net winform软件自动更新
- C# WinForm软件自动更新源码.rar
- Winform 自动更新
- winForm自动更新
- VB.Net程序设计:AutoUpdater软件自动更新
- VB.Net程序设计:AutoUpdater软件自动更新-源代码
- AutoControlMapper 基于.net 的一个WinForm自动更新和读取类
- 自动更新软件
- Winform 程序自动更新
- C#winform自动更新
- winform c# 自动更新
- winform应用程序自动更新版本
- C# winform 自动更新
- Winform程序自动更新
- Winform自动更新组件分享
- winform 自动更新 发布IIS
- .net自动更新
- C# winform自动更新程序扫盲
- 删除文件夹
- GCRetractableSectionController
- 如何把Win7在C盘的用户文件夹转移到其他分区
- IO / Linux系统对IO端口和IO内存的管理
- C# xml格式化输出函数
- .net winform软件自动更新
- 使用GPIO口模拟I2C总线并挂载设备
- Hadoop添加删除节点
- forward 和redirect的区别
- android如何实现双击返回键退出 的修正版
- 快速注册7个判断
- 问题 : ORA-1400 During Import of Export Dump Written in Direct Path Mode
- 生活感悟
- Java IO流分析整理