国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C#實現(xiàn)在線更新系統(tǒng)

2019-11-14 14:00:57
字體:
供稿:網(wǎng)友

先來看一下程序完成后長什么樣。

image

這個是程序的組成部分。

image

 

主要功能是在InitializationUpdate這個類中完成的,From1主要起到調(diào)用的作用,所以重心還是在InitializationUpdate這個類上,下面我們來看一下這個類完成了什么工作,都是如何完成的。

先調(diào)用兩個類:

        //使用WebClient下載
       
public WebClient client = new WebClient();

待會兒下載更新文件要用到

 

還有幾個全局變量

        //當前版本
        public string localversion = null;
        //最新版本
        public string latesversion = null;
        //主窗體
        public Form1 form;
        //通知內(nèi)容
        public string nnidtext = null;

 

        //獲取本地版本號
        public void NowVersion()
        {
            System.Diagnostics.FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo("新云翻譯器.exe");
            localversion = fv.FileVersion;

        }

這個方法幫我們拿到目前軟件的版本,因為我們要拿到的版本號是我們要更新的軟件的版本號,而不是本軟件的版本號,這里需要注意下,別搞錯了。

 

        /// <summary>
        /// 從服務器上獲取最新的版本號
        /// </summary>
        public void DownloadCheckUpdatexml()
        {
            try
            {
                //第一個參數(shù)是文件的地址,第二個參數(shù)是文件保存的路徑文件名
                client.DownloadFile(
http://cloudyours.net/Software//Update/NewcloudTranslator/NewcloudTranslator221210.XML, @"Update/NewcloudTranslator221210.XML");
            }
            catch
            {
                nnidtext = "沒有檢測到更新";
                Environment.Exit(0);
            }
        }

我們用這個方法從服務器上拿到最新的軟件版本,之后會進行對比。

 

        /// <summary>
        /// 讀取從服務器獲取的最新版本號
        /// </summary>
        public void LatestVersion()
        {
            if (File.Exists(@"Update/NewcloudTranslator221210.XML"))
            {
                XmlDocument doc = new XmlDocument();
                //加載要讀取的XML
                doc.Load(@"Update/NewcloudTranslator221210.XML");

                //獲得根節(jié)點
                XmlElement WriteBook = doc.DocumentElement;

                //獲得子節(jié)點 返回節(jié)點的集合
                XmlNodeList Update = WriteBook.ChildNodes;

                foreach (XmlNode item in Update)
                {
                    latesversion = item.InnerText;
                }
            }
            else if (!File.Exists(@"Update/NewcloudTranslator221210.XML"))
            {
                nnidtext = "檢查更新失敗";
                Environment.Exit(0);
            }
        }

 

這個方法就是用來讀取我們拿到的文檔,然后存儲一下,后面會用到。

 

        /// <summary>
        /// 下載安裝包
        /// </summary>
        public void DownloadInstall()
        {
            if (localversion == latesversion)
            {
                nnidtext = "恭喜你,已經(jīng)更新到最新版本";
            }
            else if (localversion != latesversion && File.Exists(@"Update/NewcloudTranslator221210.XML"))
            {
                nnidtext = "發(fā)現(xiàn)新版本,即將下載更新補丁";
                client.DownloadFile("
http://cloudtours.net/Software//Update/NewcloudTranslator/NewCloudTranslator2_2_1_210_Setup.exe", @"Update/NewCloudTranslator2_2_1_210_Setup.exe");
                if (File.Exists(@"Update/NewCloudTranslator2_2_1_210_Setup.exe"))
                {
                    InstallandDelete();//這里調(diào)用安裝的類
                }
                else if (!File.Exists(@"Update/NewCloudTranslator2_2_1_210_Setup.exe"))
                {
                    //如果一次沒有下載成功,則檢查三次
                    for (int i = 1; i < 3; i++)
                    {
                        client.DownloadFile("
http://cloudtours.net/Software//Update/NewcloudTranslator/NewCloudTranslator2_2_1_210_Setup.exe", @"Update/NewCloudTranslator2_2_1_210_Setup.exe");
                    }
                    nnidtext = "下載失敗,請檢查您的網(wǎng)絡連接是否正常";
                    Environment.Exit(0);
                }
            }
        }

 

這個方法是用來下載安裝包的,先對比一下我們讀取到的最新版本號和本地版本號,如果一樣就不用下載安裝包,如果不一樣就下載更新。

 

        /// <summary>
        /// 安裝及刪除
        /// </summary>
        PRivate void InstallandDelete()
        {
            //安裝前關閉正在運行的程序
            KillProgram();
            //啟動安裝程序
            Process.Start(@"Update/NewCloudTranslator2_2_1_210_Setup.exe");
            JudgeInstall();
        }

 這個方法就簡單了,就打開一下我們的安裝包,之后調(diào)用幾個其他方法,其他方法會在下面附上。

 

/// <summary>
/// 判斷安裝進程是否???在
/// </summary>
public void JudgeInstall()
{
    Process[] processList = Process.GetProcesses();
    foreach (Process process in processList)
    {
        if (process.ProcessName == "NewCloudTranslator2_2_1_210_Setup.exe")
        {
            process.Kill();
            File.Delete(@"Update/NewCloudTranslator2_2_1_210_Setup.exe");
            File.Delete(@"Update/NewcloudTranslator221210.XML");
        }
        else
        {
            File.Delete(@"Update/NewCloudTranslator2_2_1_210_Setup.exe");
            File.Delete(@"Update/NewcloudTranslator221210.XML");
            return;
        }
    }
}

這個方法就完成了簡單的刪除更新文件的。

 

/// <summary>
/// 結(jié)束程序
/// </summary>
public void KillProgram()
{
    Process[] processList = Process.GetProcesses();
    foreach (Process process in processList)
    {
        //如果程序啟動了,則殺死
        if (process.ProcessName == "新云翻譯器.exe")
        {
            process.Kill();
        }
    }
}

有幾個方法中用到了這個方法,并沒有什么技術含量。

 

到這里就結(jié)束了,這個程序就算做完了,其實蠻簡單的,就看你沒有想到這點。

 

注:轉(zhuǎn)載請注明出處:http://www.survivalescaperooms.com/skylgmg/p/4792990.html


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 海丰县| 晋城| 赤壁市| 吴桥县| 鄢陵县| 汽车| 金堂县| 建湖县| 西藏| 屏山县| 睢宁县| 县级市| 庆安县| 子洲县| 怀仁县| 柏乡县| 都江堰市| 濮阳县| 浮山县| 营口市| 榆树市| 奇台县| 蓝田县| 水富县| 新兴县| 上饶市| 吉隆县| 竹山县| 红桥区| 石城县| 横山县| 四平市| 洞头县| 康定县| 普定县| 大余县| 辽中县| 肇源县| 且末县| 阳朔县| 宁强县|