最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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("您已經(jīng)是最新版本。", "提示");
        }
        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("下載失敗,請檢查您的網(wǎng)絡連接是否正常。", "提示");
            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();
    }
  }
}

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

相關文章

  • 詳解如何在C#中使用投影(Projection)

    詳解如何在C#中使用投影(Projection)

    這篇文章主要介紹了詳解如何在C#中使用投影(Projection),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • c#linq里的Skip和Take實現(xiàn)分頁或遍歷

    c#linq里的Skip和Take實現(xiàn)分頁或遍歷

    LINQ的優(yōu)勢在于它提供了一種直觀、類型安全的方式來操作各種類型的數(shù)據(jù),查詢常需要獲取一部分數(shù)據(jù),為了實現(xiàn)這一功能,LINQ提供了Take?和Skip運算符,Take運算符用于從一個序列中返回指定個數(shù)的元素,Skip運算符用于從一個序列中跳過指定個數(shù)的元素
    2024-01-01
  • C#中異步回調(diào)函數(shù)用法實例

    C#中異步回調(diào)函數(shù)用法實例

    這篇文章主要介紹了C#中異步回調(diào)函數(shù)用法,實例分析了異步回調(diào)函數(shù)的定義及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C#如何動態(tài)創(chuàng)建Label,及動態(tài)label事件

    C#如何動態(tài)創(chuàng)建Label,及動態(tài)label事件

    這篇文章主要介紹了C#如何動態(tài)創(chuàng)建Label,及動態(tài)label事件,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 基于WPF實現(xiàn)篩選下拉多選控件

    基于WPF實現(xiàn)篩選下拉多選控件

    這篇文章主要為大家詳細介紹了如何基于WPF實現(xiàn)簡單的篩選下拉多選控件,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,感興趣的小伙伴可以了解一下
    2023-04-04
  • C#集合之可觀察集合的用法

    C#集合之可觀察集合的用法

    這篇文章介紹了C#集合之可觀察集合的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#實現(xiàn)金額轉(zhuǎn)換成中文大寫金額

    C#實現(xiàn)金額轉(zhuǎn)換成中文大寫金額

    這篇文章主要為大家詳細介紹了C#實現(xiàn)金額轉(zhuǎn)換成中文大寫金額,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • C#在Winform開發(fā)中使用Grid++報表

    C#在Winform開發(fā)中使用Grid++報表

    這篇文章主要介紹了C#在Winform開發(fā)中使用Grid++報表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • C#模擬瀏覽器實現(xiàn)自動操作

    C#模擬瀏覽器實現(xiàn)自動操作

    這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)模擬瀏覽器實現(xiàn)自動操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • C#使用日志組件log4net

    C#使用日志組件log4net

    這篇文章介紹了C#日志組件log4net的使用方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

汝州市| 富顺县| 张家界市| 武夷山市| 石首市| 蓬溪县| 石渠县| 甘洛县| 施甸县| 锡林郭勒盟| 六盘水市| 清涧县| 长寿区| 泾阳县| 大化| 邢台县| 焉耆| 九龙坡区| 伊川县| 泉州市| 安徽省| 虞城县| 长泰县| 中山市| 安阳县| 屯留县| 临洮县| 永州市| 肥城市| 海淀区| 广东省| 左云县| 资中县| 全南县| 凤翔县| 固阳县| 依安县| 庆阳市| 临海市| 鄢陵县| 平远县|