• 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
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现在线更新软件

C#实现在线更新软件

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

通过本文主要向大家介绍了c语言,欲情 c max,crh2c,奔驰c200,85度c等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

通过某些手段后台更新软件。首先你要有一个放置新版本信息的网站

UpdateSoftwareForm.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CCWin;
using System.Net;
using System.Collections;
using System.IO;
using System.Xml;
using System.Diagnostics;
using System.Threading;
 
namespace WriteBook
{
  public partial class UpdateSoftwareForm : Skin_Metro
  {
    public UpdateSoftwareForm()
    {
      InitializeComponent();
    }
 
    #region 一些对象和变量
 
    //使用WebClient下载
    WebClient client = new WebClient();
    ArrayList downlist = new ArrayList();
    //当前版本
    string nowversion = null;
    //最新版本
    string latesversion = null;
 
    #endregion
 
    #region 获取版本号
 
    /// <summary>
    /// 从服务器上获取最新的版本号
    /// </summary>
    public void DownloadCheckUpdateXml()
    {
      try
      {
        //第一个参数是文件的地址,第二个参数是文件保存的路径文件名
        client.DownloadFile("http://bbs.cloudtour.tk/SoftwareDownload/WriteBook/WriteBook2.xml", "WriteBook2.xml");
      }
      catch
      {
        MessageBox.Show("没有检测到更新。", "提示");
        this.Close();
      }
    }
 
    /// <summary>
    /// 获取本地软件的版本号
    /// </summary>
    private void NowVersion()
    {
      nowversion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "\n";
      LocalText.Text = nowversion;
    }
 
    /// <summary>
    /// 读取从服务器获取的最新版本号
    /// </summary>
    public void LatestVersion()
    {
      try
      {
        if (File.Exists("WriteBook2.xml.xml"))
        {
          XmlDocument doc = new XmlDocument();
          //加载要读取的XML
          doc.Load("WriteBook2.xml.xml");
 
          //获得根节点
          XmlElement WriteBook = doc.DocumentElement;
 
          //获得子节点 返回节点的集合
          XmlNodeList Update = WriteBook.ChildNodes;
 
          foreach (XmlNode item in Update)
          {
            latesversion = item.InnerText;
          }
          LatestText.Text = latesversion;
        }
        else
        {
          MessageBox.Show("没有检测到更新。", "提示");
          this.Close();
        }
      }
      catch
      {
        this.Close();
      }
    }
 
    #endregion
 
    #region 初始化程序
 
    /// <summary>
    /// 初始化程序
    /// </summary>
    private void InitializeandInstall()
    {
      UpdateProgressBar.Value = 20;
      DownloadCheckUpdateXml();
      UpdateProgressBar.Value = 40;
      NowVersion();
      UpdateProgressBar.Value = 60;
      LatestVersion();
      UpdateProgressBar.Value = 80;
      DownloadInstall();
      UpdateProgressBar.Value = 100;
    }
 
    #endregion
 
    #region 安装and删除
 
    /// <summary>
    /// 下载安装包
    /// </summary>
    public void DownloadInstall()
    {
      try
      {
        if (nowversion == latesversion)
        {
          MessageBox.Show("您已经是最新版本。", "提示");
        }
        else if (nowversion != latesversion && File.Exists("WriteBook2.xml"))
        {
          MessageBox.Show("发现新版本,即将下载更新补丁。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
          client.DownloadFile("http://bbs.cloudtour.tk/SoftwareDownload/WriteBook/WBsetup.exe", "WBsetup.exe");
          if (File.Exists("Setup.exe"))
          {
            InstallandDelete();
          }
          else
          {
            for (int i = 1; i < 3; i++)
            {
              client.DownloadFile("http://bbs.cloudtour.tk/SoftwareDownload/WriteBook/WBsetup.exe", "WBsetup.exe");
            }
            MessageBox.Show("下载失败,请检查您的网络连接是否正常。", "提示");
            this.Close();
          }
        }
      }
      catch
      {
        MessageBox.Show("更新失败,没有发现新版本。", "提示");
        this.Close();
      }
    }
 
    /// <summary>
    /// 安装及删除
    /// </summary>
    private void InstallandDelete()
    {
      try
      {
        DialogResult dr = MessageBox.Show("下载更新成功,是否安装新更新?", "提示", MessageBoxButtons.YesNoCancel);
        if (dr == System.Windows.Forms.DialogResult.Yes)
        {
          //启动安装程序
          System.Diagnostics.Process.Start("WBsetup.exe");
          Thread td = new Thread(JudgeInstall);
          td.Start();
        }
        else { }
      }
      catch
      {
        MessageBox.Show("发生未知错误,更新失败。", "提示");
        this.Close();
      }
    }
 
    /// <summary>
    /// 判断安装进程是否存在
    /// </summary>
    public void JudgeInstall()
    {
      while (true)
      {
        Process[] processList = Process.GetProcesses();
        foreach (Process process in processList)
        {
          if (process.ProcessName == "WBsetup.exe") { }
          else
          {
            DialogResult dr = MessageBox.Show("更新成功,是否删除安装包?", "提示", MessageBoxButtons.YesNo);
            if (dr == System.Windows.Forms.DialogResult.Yes)
            {
              File.Delete("WBsetup.exe");
              File.Delete("WriteBook2.xml");
            }
          }
        }
      }
    }
 
    #endregion
 
    /// <summary>
    /// 点击初始化程序
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void UpdateButton_Click(object sender, EventArgs e)
    {
      InitializeandInstall();
    }
  }
}
</div>

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

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

  • 详解C#中三个关键字params,Ref,out
  • 浅谈C#中的for循环与foreach循环
  • 关于C#中ajax跨域访问问题
  • 使用C#编写15子游戏
  • 为IObservable实现自己的运算符(详解)
  • 使用C#正则表达式获取必应每日图片地址
  • C#七大经典排序算法系列(上)
  • C#无损压缩图片
  • C# BackgroundWorker用法详解
  • 详解三种C#实现数组反转方式

相关文章

  • 2017-05-28DevExpress获取节点下可视区域子节点集合的实现方法
  • 2017-05-28.net 随机生成汉字
  • 2017-05-28微信开发--企业转账到用户
  • 2017-05-28Winform窗体效果实例分析
  • 2017-05-28探讨c#中的unchecked是什么意思,起什么作用?
  • 2017-05-28关于WPF异步MVVM等待窗体的介绍
  • 2017-05-28C#操作ftp类完整实例
  • 2017-05-28C#数据库操作的用法
  • 2017-05-28C#实现将商品金额小写转换成大写的方法
  • 2017-05-28c# SQLHelper(for winForm)实现代码

文章分类

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

最近更新的内容

    • C#图像处理之霓虹效果实现方法
    • c#通过DES加密算法加密大文件的方法
    • c# 动态加载dll文件,并实现调用其中的方法(推荐)
    • C#实现两个richtextbox控件滚动条同步滚动的简单方法
    • C#操作ftp类完整实例
    • Dictionary扩展基础类向字典中添加键和值
    • C#枚举数值与名称的转换实例分享
    • C# 基础入门--变量
    • 如何利用反射构建元数据查看器
    • C#简单实现子窗体向父窗体传值的方法

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

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