• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ClickOnce DIY全自动更新下载升级的自我实现

ClickOnce DIY全自动更新下载升级的自我实现

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了clickonce,clickonce安装路径,clickonce部署,clickonce应用程序,clickonce发布工具等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
SmartClient概念近来比较热,但在微软提出这个名词以前已经有大量的软件在这么做了,一方面是简化客户端的部署,一方面是提供自动升级的功能;对于传统的WinForm应用来讲,确实是可以降低维护成本的一个不错的解决方案;
 微软在推出SmartClient概念时,推出了相关的updater的Application Block,做的也蛮不错,但作者前段还是根据软件特性自己写了一个很简单的实现,大家也大概能了解一下原理:
笔者的简化版自动升级管理器只需要四步走:
1.一个负责查找和下载新版本的本地类
2.本地配置文件中(或在代码中硬编码?不太好吧),指向更新服务器的URL
3.服务器上一个标识版本号和新文件URL的配置文件
4.调用示例
1.版本管理类
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Net;
using System.IO;
using System.Windows.Forms;
namespace Survey
{
    class VersionAgent
    {
        public static bool CheckNetwork()
        {
            HttpWebRequest request;
            try
            {
                request = (HttpWebRequest)WebRequest.Create(Pub.GetSetting("UpdateUrl") );//从本地配置文件获取的网络中配置文件的URL
                request.Proxy = WebProxy.GetDefaultProxy();
                request.GetResponse();//如果可以获得响应,说明网络没问题
            }
            catch (Exception e)
            {
                Pub.logError(e);
                return false;
            }
            return true;
        }

        public static bool CheckUpdate()
        {
            XmlDocument doc = loadXMLDocument(Pub.GetSetting("UpdateUrl"));
            Sys.UpdateUrl = GetValue(doc, "DownloadURL").Trim();//将来会用这个URL自动下载 
            Sys.UpdatePage = GetValue(doc, "DownloadPage").Trim();//如自动下载失败,会提供到这个页面手工下载
            string warningRate = GetValue(doc, "WarningRate").Trim();
            float.TryParse(warningRate,out Sys.WarningRate);
            string NetVersion = GetValue(doc, "Version").Trim();
Version LocalVersion=System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
            return new Version(NetVersion).CompareTo(new Version(LocalVersion))>0;//大于0说明有新版本发布
        }//这个方法是载入网络配置文件,读取一些不想放在本地的配置参数,以及比较本地和网络版本号
        public static bool GoUpdate()
        {
          return DownLoadFile(Sys.UpdateFile,Sys.UpdateUrl);

        }
        public static string GetValue(XmlDocument doc, string Key)
        {
            string Value;
            try
            {
                XmlElement elem = (XmlElement)doc.SelectSingleNode(@"/config/app/" + Key);//读取配置文件可自行定义
                Value = elem == null ? "" : elem.GetAttribute("value"); 
            }
            catch
            {
                Value = "";
            }
            return Value;
        }
        public static XmlDocument loadXMLDocument(string FileNameOrUrl)
        {
            XmlDocument doc = null;
            try
            {
                doc = new XmlDocument();
                doc.Load( FileNameOrUrl);
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show(e.Message);
                Pub.logError(e);
                doc = null;
            }
            return doc;
        }

        public static bool DownLoadFile(string FileName, string Url)
        {
            bool Value = false;
            WebResponse response = null;
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ClickOnce DIY全自动更新下载升级的自我实现

相关文章

  • 2017-05-11动态加载Js代码到Head标签中的脚本
  • 2017-05-11剖析Asp.Net Web API路由系统---WebHost部署方式
  • 2017-05-11微信公众平台开发之自定义菜单.Net代码解析
  • 2017-05-11asp.net 通过aspnetpager为DataList分页
  • 2017-05-11asp.net获取select值的方法
  • 2017-05-11ASP.NET无刷新分页简单实现
  • 2018-08-20一个简单的ASP.NET验证码
  • 2017-05-11Opencv2.4.13与Visual Studio2013环境搭建配置教程
  • 2017-05-11ASP.NET性能优化八条建议
  • 2017-05-11asp.net后台注册js的四种方法分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net学习中发现的比较完整的流程
    • Silverlightbutton图片切换样式实例代码
    • 使用ASP.NET一般处理程序或WebService返回JSON的实现代码
    • MVC 5 第一章 创建MVC 5 web应用程序
    • asp.net DZ论坛中根据IP地址取得所在地的代码
    • gridview行索引获取方法及实现代码
    • .NET 资源文件resx、Resources详细说明
    • ASP.NET开发者使用jQuery应该了解的几件事情
    • ASP.NET配置KindEditor文本编辑器图文教程
    • 详解ASP.NET-----Repeater数据控件的用法总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有