C#.Net局域网版本自动升级解决方案(原创)
作者:C/S框架网  发布日期:2011-05-12 22:59:09
C#.Net局域网版本自动升级解决方案(原创)

开发框架高级版提供版本自动升级套件,全部开源。目前升级程序是1.0版,此版本适合企业内部网络的程序升级。接下来准备对1.0进行升级,兼容广域网络升级(升级Tcp/IP下载器及扩充WebService下载器),两者必须面对的问题是文件压缩与解压。

升级程序1.0由两个独立的程序组成:

1. CSFramework3.AutoUpgradeServer.exe : Tcp/IP服务器
2. CSFramework3.AutoUpgrade.exe: 客户端程序

客户端执行升级方式:

1. 手动运行升级程序CSFramework3.AutoUpgrade.exe

贴图图片

2. 主程序Main.EXE自动调用检测版本, 调用代码:

C# Code:

bool appExit = false;
VersionCheck.CheckVersion(ref appExit); //检查版本
if (appExit)
{
   Application.Exit();
   return;
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898






AutoUpgrader V1.0 定义了两个下载策略,通过Upgrader.ini文件配置任意一种,预设为TcpIP下载.

策略接口 (IDownloader)

贴图图片


C# Code:

/// <summary>
/// 下载器接口
/// </summary>
public interface IDownloader
{
   /// <summary>
   /// 下载器名称
   /// </summary>
   string Name { get; }
   
   /// <summary>
   /// 文件存放路径
   /// </summary>
   string DestinationPath { get; set; }
   
   /// <summary>
   /// 本次下载文件清单
   /// </summary>
   IList FileList { get; }
   
   /// <summary>
   /// 下载成功文件数
   /// </summary>
   int DownloadSuccess { get; }
   
   /// <summary>
   /// 下载失败文件数
   /// </summary>
   int DownloadFailed { get; }
   
   /// <summary>
   /// 获取下载文件清单
   /// </summary>
   IList GetFileList();
   
   void DownloadAll();
   void DownloadAll(IList files);
   bool DownloadFile(FileInfo file);
   
   IProgressUI ProgressUI { get; set; }
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898



a) DownloaderTCPIP: 使用Tcp/Ip Socket组件下载文件

贴图图片

b) DownloaderLAN:网络共享盘(共享目录)直接复制文件

在局域网上共享一个目录,目录权限仅开放给一个特定的用户, 其它用户不可直接访问.

贴图图片


版本自动升级流程图:


贴图图片

流程说明:

1) 客户端请求更新版本(或系统自动检测版本) 
2) 下载服务器上的文件清单(FileList.XML文件) 到本地。
3) 枚举FileList.XML文件与本地文件的日期进行比较, 当日期小于服务器上的文件日期时需要下载该文件.
4) 筛选出要更新的文件(本地文件日期小于服务器端文件日期) ,然后建立下载清单。
5) 跟据下载清单逐个下载文件。
6) 下载完成后运行主程序。


Source Code for VIP:


贴图图片



点击下载附件 (VIP会员下载) 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇