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

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

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

通過某些手段后臺更新軟件。首先你要有一個(gè)放置新版本信息的網(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();
    //當(dāng)前版本
    string nowversion = null;
    //最新版本
    string latesversion = null;
 
    #endregion
 
    #region 獲取版本號
 
    /// <summary>
    /// 從服務(wù)器上獲取最新的版本號
    /// </summary>
    public void DownloadCheckUpdateXml()
    {
      try
      {
        //第一個(gè)參數(shù)是文件的地址,第二個(gè)參數(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>
    /// 讀取從服務(wù)器獲取的最新版本號
    /// </summary>
    public void LatestVersion()
    {
      try
      {
        if (File.Exists("WriteBook2.xml.xml"))
        {
          XmlDocument doc = new XmlDocument();
          //加載要讀取的XML
          doc.Load("WriteBook2.xml.xml");
 
          //獲得根節(jié)點(diǎn)
          XmlElement WriteBook = doc.DocumentElement;
 
          //獲得子節(jié)點(diǎn) 返回節(jié)點(diǎn)的集合
          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)新版本,即將下載更新補(bǔ)丁。", "提示", 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)絡(luò)連接是否正常。", "提示");
            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ā)生未知錯(cuò)誤,更新失敗。", "提示");
        this.Close();
      }
    }
 
    /// <summary>
    /// 判斷安裝進(jìn)程是否存在
    /// </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>
    /// 點(diǎn)擊初始化程序
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void UpdateButton_Click(object sender, EventArgs e)
    {
      InitializeandInstall();
    }
  }
}

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了C#中異步回調(diào)函數(shù)用法,實(shí)例分析了異步回調(diào)函數(shù)的定義及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    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事件,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 基于WPF實(shí)現(xiàn)篩選下拉多選控件

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

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

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

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

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

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

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

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

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

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

    C#使用日志組件log4net

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

最新評論

华容县| 凯里市| 佛冈县| 博兴县| 郎溪县| 商南县| 商河县| 大港区| 南靖县| 聂拉木县| 烟台市| 乳源| 玉溪市| 民勤县| 分宜县| 乐昌市| 小金县| 留坝县| 郯城县| 广安市| 嘉禾县| 平果县| 娄底市| 西平县| 波密县| 绵阳市| 焦作市| 温州市| 广灵县| 教育| 攀枝花市| 民乐县| 华蓥市| 淮滨县| 怀仁县| 咸阳市| 金乡县| 伊吾县| 丰宁| 碌曲县| 汉阴县|