zoukankan      html  css  js  c++  java
  • C#WinForm App自动更新(Live Update)架构

     

    一. 基本思路
         一直做Web Form开发,最近开始尝试了一下Win Form,做了一个小系统,在发布了第一个可用版本之后,顺便实现了自动更新功能。之前没有这方面的经验,也没有翻阅相关资料,自己想了一个简单的思路,如有笑话之处,恳请批评指正。
        基本上就是这样的:
        客户端有两个子程序,简单的讲就是两个EXE,一个主的应用程序,一个自动Live Update程序,而在服务端,是一个WCF,提供程序版本更新信息和更新文件。
         每当程序启动(或手动点“检测更新”),主程序会调用服务端的WCF检测更新,若检测到新版本,则启动Live Update程序,同时关闭自身。
         Live Update启动后,调用服务端WCF,获取文件列表,然后直接下载更新文件并覆盖本地文件。完毕后启动主程序,同时关闭自身,这样,一次自动更新就完了。
    二. 系统架构
        
    三. 序列图
        

    四. 其它
    1. 检测新版本
         在WCF中会有一个XML配置文件,用于客户检测版本和更新文件。
        
    2. 下载文件以及覆盖旧文件
         Live Update下载文件后先保存在临时文件夹,下载完毕后再从临时文件夹覆盖主应用程序的旧文件。防止自动更新中途失败导致主应用程序不可用。

    3. WCF Contract(仅供参考)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;

    namespace WendyFinance.UpdateCenter.Contract {

         [ServiceContract]
        
    public interface IAutoUpdate {

             [OperationContract]
            
    bool CheckUpdate(string clientVersion);

             [OperationContract]
            
    string GetCurrentVersion();

             [OperationContract]
            
    string GetUpdateDescription();

             [OperationContract]
             List
    <string> GetFileList();

             [OperationContract]
            
    string GetFile(string fileName);
         }

    }
    文件来自:http://www.cnblogs.com/guozhijian/archive/2008/01/25/1052802.html
  • 相关阅读:
    SQL-server 学习笔记(三):实战建库建表,插入数据
    SQL-server 学习笔记(二):约束
    SQL-server 学习笔记(一):数据库创建
    操作系统——第五章
    操作系统——第四章
    操作系统——第三章
    操作系统——第二章 (二)
    Python之路,Day7
    Day6
    Day5
  • 原文地址:https://www.cnblogs.com/godwar/p/1260897.html
Copyright © 2011-2022 走看看