欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)在線更新軟件

 更新時間:2015年05月25日 15:11:16   投稿:hebedich  
winform程序相對web程序而言,功能更強大,編程更方便,但軟件更新卻相當麻煩,要到客戶端一臺一臺地升級,面對這個實際問題,在最近的一個小項目中,本人設計了一個通過軟件實現(xiàn)自動升級技術方案,彌補了這一缺陷,有較好的參考價值

通過某些手段后臺更新軟件。首先你要有一個放置新版本信息的網站

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
      {
        //第一個參數(shù)是文件的地址,第二個參數(shù)是文件保存的路徑文件名
        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");
 
          //獲得根節(jié)點
          XmlElement WriteBook = doc.DocumentElement;
 
          //獲得子節(jié)點 返回節(jié)點的集合
          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("發(fā)現(xiàn)新版本,即將下載更新補丁。", "提示", 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("更新失敗,沒有發(fā)現(xiàn)新版本。", "提示");
        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("發(fā)生未知錯誤,更新失敗。", "提示");
        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();
    }
  }
}

以上所述就是本文的全部內容了,希望大家能夠喜歡。

相關文章

  • c#橋接模式(bridge結構模式)用法實例

    c#橋接模式(bridge結構模式)用法實例

    這篇文章主要介紹了c#橋接模式(bridge結構模式)用法,較為詳細的分析了橋接模式的原理與用法實例,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • WCF和Remoting之間的消息傳輸

    WCF和Remoting之間的消息傳輸

    這篇文章介紹了WCF和Remoting之間的消息傳輸,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#中深度復制和淺度復制詳解

    C#中深度復制和淺度復制詳解

    這篇文章主要介紹了C#中深度復制和淺度復制的相關資料,需要的朋友可以參考下
    2015-10-10
  • sqlserver備份還原數(shù)據(jù)庫功能封裝分享

    sqlserver備份還原數(shù)據(jù)庫功能封裝分享

    這篇文章主要介紹了sqlserver備份還原數(shù)據(jù)庫功能封裝示例,需要的朋友可以參考下
    2014-03-03
  • C#?Socket數(shù)據(jù)接收的三種實現(xiàn)方式

    C#?Socket數(shù)據(jù)接收的三種實現(xiàn)方式

    本文主要介紹了C#?Socket數(shù)據(jù)接收的三種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • C#5.0中的異步編程關鍵字async和await

    C#5.0中的異步編程關鍵字async和await

    這篇文章介紹了C#5.0中的異步編程關鍵字async和await,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 在C#中 webbrowser的使用心得

    在C#中 webbrowser的使用心得

    最近用webbrowser做了個東西,期間有點小曲折,而且網上的解決方法也基本都是淺嘗輒止,特此在這里發(fā)一下同大家分享。
    2013-04-04
  • C#編程實現(xiàn)DataTable添加行的方法

    C#編程實現(xiàn)DataTable添加行的方法

    這篇文章主要介紹了C#編程實現(xiàn)DataTable添加行的方法,結合兩個實例形式分析了C#操作DataTable實現(xiàn)動態(tài)添加行的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#數(shù)字圖象處理之圖像灰度化方法

    C#數(shù)字圖象處理之圖像灰度化方法

    這篇文章主要介紹了C#數(shù)字圖象處理之圖像灰度化方法,涉及C#基于Bitmap類操作圖像的相關技巧,需要的朋友可以參考下
    2015-04-04
  • WinForm中Application.Idle方法詳解

    WinForm中Application.Idle方法詳解

    本文詳細講解了WinForm中的Application.Idle方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論