牧羊三国游戏网(策略单机游戏无毒无插件无广告免费下载)

 找回密码
 立即注册

微信扫码登录

使用验证码登录

查看: 1952|回复: 3

[原创] C#实现在线更新软件

[复制链接]
发表于 2015-7-12 00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多三国游戏迷,轻松玩转“牧羊”。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using CCWin;
  10. using System.Net;
  11. using System.Collections;
  12. using System.IO;
  13. using System.Xml;
  14. using System.Diagnostics;
  15. using System.Threading;

  16. namespace WriteBook
  17. {
  18.     public partial class UpdateSoftwareForm : Skin_Metro
  19.     {
  20.         public UpdateSoftwareForm()
  21.         {
  22.             InitializeComponent();
  23.         }

  24.         #region 一些对象和变量

  25.         //使用WebClient下载
  26.         WebClient client = new WebClient();
  27.         ArrayList downlist = new ArrayList();
  28.         //当前版本
  29.         string nowversion = null;
  30.         //最新版本
  31.         string latesversion = null;

  32.         #endregion

  33.         /// <summary>
  34.         /// 窗体运行时
  35.         /// </summary>
  36.         /// <param name="sender"></param>
  37.         /// <param name="e"></param>
  38.         private void UpdateSoftwareForm_Load(object sender, EventArgs e)
  39.         {
  40.             nowversion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "\n";
  41.             LocalText.Text = nowversion;
  42.         }

  43.         /// <summary>
  44.         /// 点击初始化程序
  45.         /// </summary>
  46.         /// <param name="sender"></param>
  47.         /// <param name="e"></param>
  48.         private void UpdateButton_Click(object sender, EventArgs e)
  49.         {
  50.             InitializeandInstall();
  51.         }

  52.         /// <summary>
  53.         /// 初始化程序
  54.         /// </summary>
  55.         private void InitializeandInstall()
  56.         {
  57.             skinProgressIndicator1.AutoStart = true;
  58.             DownloadCheckUpdateXml();
  59.             NowVersion();
  60.             LatestVersion();
  61.             DownloadInstall();
  62.         }

  63.         #region 获取版本号

  64.         /// <summary>
  65.         /// 从服务器上获取最新的版本号
  66.         /// </summary>
  67.         public void DownloadCheckUpdateXml()
  68.         {
  69.             try
  70.             {
  71.                 //第一个参数是文件的地址,第二个参数是文件保存的路径文件名
  72.                 client.DownloadFile("http://cloudtours.net/web/WriteBook/WriteBook211.XML", @"Update\WriteBook211.XML");
  73.             }
  74.             catch
  75.             {
  76.                 MessageBox.Show("没有检测到更新。", "提示");
  77.                 this.Close();
  78.             }
  79.         }

  80.         /// <summary>
  81.         /// 获取本地软件的版本号
  82.         /// </summary>
  83.         private void NowVersion()
  84.         {
  85.             nowversion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "\n";
  86.             LocalText.Text = nowversion;
  87.         }

  88.         /// <summary>
  89.         /// 读取从服务器获取的最新版本号
  90.         /// </summary>
  91.         public void LatestVersion()
  92.         {
  93.             try
  94.             {
  95.                 if (File.Exists(@"Update\WriteBook211.XML"))
  96.                 {
  97.                     XmlDocument doc = new XmlDocument();
  98.                     //加载要读取的XML
  99.                     doc.Load(@"Update\WriteBook211.XML");

  100.                     //获得根节点
  101.                     XmlElement WriteBook = doc.DocumentElement;

  102.                     //获得子节点 返回节点的集合
  103.                     XmlNodeList Update = WriteBook.ChildNodes;

  104.                     foreach (XmlNode item in Update)
  105.                     {
  106.                         latesversion = item.InnerText;
  107.                     }
  108.                     LatestText.Text = latesversion;
  109.                 }
  110.                 else
  111.                 {
  112.                     MessageBox.Show("没有检测到更新。", "提示");
  113.                     this.Close();
  114.                 }
  115.             }
  116.             catch
  117.             {
  118.                 this.Close();
  119.             }
  120.         }

  121.         #endregion

  122.         #region 安装and删除

  123.         /// <summary>
  124.         /// 下载安装包
  125.         /// </summary>
  126.         public void DownloadInstall()
  127.         {
  128.             try
  129.             {
  130.                 if (nowversion == latesversion)
  131.                 {
  132.                     MessageBox.Show("您已经是最新版本。", "提示");
  133.                 }
  134.                 else if (nowversion != latesversion && File.Exists(@"Update\WriteBook211.XML"))
  135.                 {
  136.                     MessageBox.Show("发现新版本,即将下载更新补丁。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  137.                     client.DownloadFile("http://cloudtours.net/web/WriteBook/WBsetup2_0_2.exe", @"Update\WBsetup2_0_2.exe");
  138.                     if (File.Exists(@"Update\WBsetup2_0_2.exe"))
  139.                     {
  140.                         InstallandDelete();
  141.                     }
  142.                     else
  143.                     {
  144.                         for (int i = 1; i < 3; i++)
  145.                         {
  146.                             client.DownloadFile("http://cloudtours.net/web/WriteBook/WBsetup2_0_2.exe", @"Update\WBsetup2_0_2.exe");
  147.                         }
  148.                         MessageBox.Show("下载失败,请检查您的网络连接是否正常。", "提示");
  149.                         this.Close();
  150.                     }
  151.                 }
  152.             }
  153.             catch
  154.             {
  155.                 MessageBox.Show("更新失败,没有发现新版本。", "提示");
  156.                 File.Delete(@"Update\WBsetup2_0_2.exe");
  157.                 File.Delete(@"Update\WriteBook211.XML");
  158.                 this.Close();
  159.             }
  160.         }

  161.         /// <summary>
  162.         /// 安装及删除
  163.         /// </summary>
  164.         private void InstallandDelete()
  165.         {
  166.             try
  167.             {
  168.                 DialogResult dr = MessageBox.Show("下载更新成功,是否安装新更新?", "提示", MessageBoxButtons.YesNoCancel);
  169.                 if (dr == System.Windows.Forms.DialogResult.Yes)
  170.                 {
  171.                     //启动安装程序
  172.                     System.Diagnostics.Process.Start(@"Update\WBsetup2_0_2.exe");
  173.                     Thread td = new Thread(JudgeInstall);
  174.                     td.Start();
  175.                 }
  176.                 else
  177.                 {
  178.                     File.Delete(@"Update\WBsetup2_0_2.exe");
  179.                     File.Delete(@"Update\WriteBook211.XML");
  180.                 }
  181.             }
  182.             catch
  183.             {
  184.                 MessageBox.Show("发生未知错误,更新失败。", "提示");
  185.                 File.Delete(@"Update\WBsetup2_0_2.exe");
  186.                 File.Delete(@"Update\WriteBook211.XML");
  187.                 this.Close();
  188.             }
  189.         }

  190.         /// <summary>
  191.         /// 判断安装进程是否存在
  192.         /// </summary>
  193.         public void JudgeInstall()
  194.         {
  195.             Process[] processList = Process.GetProcesses();
  196.             foreach (Process process in processList)
  197.             {
  198.                 if (process.ProcessName == "WBsetup2_0_2.exe") { JudgeInstall(); }
  199.                 else
  200.                 {
  201.                     while (true)
  202.                     {
  203.                         DialogResult dr = MessageBox.Show("更新成功,是否删除安装包?", "提示", MessageBoxButtons.YesNo);
  204.                         if (dr == DialogResult.Yes)
  205.                         {
  206.                             File.Delete(@"Update\WBsetup2_0_2.exe");
  207.                             File.Delete(@"Update\WriteBook211.XML");
  208.                             return;
  209.                         }
  210.                         else { return; }
  211.                     }
  212.                 }
  213.             }
  214.         }

  215.         #endregion

  216.     }
  217. }
复制代码






上一篇:新云启动盒1.01|享受整洁|享受极速操作
 楼主| 发表于 2015-7-12 00:20 | 显示全部楼层
在线更新软件 - 开源中国社区 http://www.oschina.net/code/snippet_2368961_48115#69903
发表于 2015-7-15 16:27 | 显示全部楼层
额               

评分

参与人数 1五铢钱 -10 收起 理由
野人 -10 严禁水贴,再次警告。

查看全部评分

发表于 2021-6-17 21:06 | 显示全部楼层
看着代码,我仿佛青春又回来了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

牧羊头条上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|牧羊三国游戏网

GMT+8, 2024-12-22 01:14 , Processed in 0.120814 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表