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

首頁 > 學院 > 開發設計 > 正文

如何讓程序自動更新

2019-11-17 02:35:08
字體:
來源:轉載
供稿:網友

如何讓程序自動更新

自動更新的軟件的目的在于讓客戶不在為了尋找最新軟件花費時間。也不用去到開發商的網站上查找。客戶端的軟件自動會在程序啟動前查找服務器上最新的版本。和自己當前軟件的版本比較,如果服務器的是最新版本。客戶端則進行自動下載、解壓、安裝。當然了下載是要有網絡的,并且用戶可以根據提示去完成操作。再也不用為找不到最新版本的軟件而頭疼。下面是我的大體思路,已經得到了實現:

1、 寫一個webservice,提供一個獲取服務器xml中版本的數據的方法。(也可用其他文件格式, 此處舉例XML)

2、 在WinForm應用程序啟動的時候,首先訪問webservice獲取服務器的xml中的版本號,然后獲取客戶端的xml中的版本號。將兩個版本號比較,若服務器中的版本號大,則提示提示可以在線更新應用程序。

3、 然后客戶端自動下載網絡上的RAR壓縮包到本機的指定位置,進行自動解壓縮。解壓縮完畢之后,用進程打開所解壓過的exe文件進行軟件安裝。同時關閉客戶端軟件所在的進程。

一 web項目中的代碼

首先我給大家先展示下我的web項目中的webservice的代碼,這里面跟簡單,只有一個方法。項目需要發布到IIS上面。

1.1webservice中的代碼

 [STAThread]        static void Main()        {            application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            LoadMath();        }        PRivate static void LoadMath()        {            //服務器上的版本號            string NewEdition = string.Empty;            //應用程序中的版本號            string OldEdition = string.Empty;            try            {                //獲取webservice上的版本號                myService.WebServiceUpdateSoapClient c = new myService.WebServiceUpdateSoapClient();                NewEdition = c.GetEdition("clkj_ws");            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }            try            {                //獲取系統中xml里面存儲的版本號                XDocument document = XDocument.Load("XMLEdition.xml");                XElement element = document.XPathSelectElement("Content/Project/Edition");                if (element != null)                {                    OldEdition = element.Value.ToString();                }            }            catch (Exception exx)            {                MessageBox.Show(exx.Message);            }            double newE = double.Parse(NewEdition);            double oldE = double.Parse(OldEdition);            //比較兩個版本號,判斷應用程序是否要更新            if (newE > oldE)            {                               //更新程序¨°                DialogResult dr = MessageBox.Show("發現新的版本是否要更新該軟件", "系統提示?", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);                if (dr == DialogResult.OK)                {                    //打開下載窗口                    Application.Run(new DownUpdate ());                }                else                {                    //若用戶取消,打開初始界面                    Application.Run(new Login());                }            }        }
View Code

1.2xml中的代碼

<?xml version="1.0" encoding="utf-8" ?>

<Content>

<Project id="p1">

<Name>test</Name>

<Edition>2.0</Edition>

</Project>

</Content>

二 WinForm項目中的代碼

Web項目的代碼就只有上面的一點,重點的還是在WinForm中。在WinForm中首先要添加web引用,將上述的webservice訪問地址復制過來使用。下面我一步一步來為大家解析吧。

第一步:

2.1 xml中的代碼

客戶端的代碼和服務器斷的xml代碼大致相同,不同的只用Edition元素里面的值。

<?xml version="1.0" encoding="utf-8" ?>

<Content>

<Project id="p1">

<Name>test</Name>

<Edition>1.0</Edition>

</Project>

</Content>

2.2 Program.cs代碼(設置起始頁的代碼)

在Program.cs(WinForm中設置起始頁的地方)這個類中添加代碼

 [STAThread]        static void Main()        {            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            LoadMath();        }        private static void LoadMath()        {            //服務器上的版本號            string NewEdition = string.Empty;            //應用程序中的版本號            string OldEdition = string.Empty;            try            {                //獲取webservice上的版本號                myService.WebServiceUpdateSoapClient c = new myService.WebServiceUpdateSoapClient();                NewEdition = c.GetEdition("clkj_ws");            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }            try            {                //獲取系統中xml里面存儲的版本號                XDocument document = XDocument.Load("XMLEdition.xml");                XElement element = document.XPathSelectElement("Content/Project/Edition");                if (element != null)                {                    OldEdition = element.Value.ToString();                }            }            catch (Exception exx)            {                MessageBox.Show(exx.Message);            }            double newE = double.Parse(NewEdition);            double oldE = double.Parse(OldEdition);            //比較兩個版本號,判斷應用程序是否要更新            if (newE > oldE)            {                               //更新程序¨°                DialogResult dr = MessageBox.Show("發現新的版本是否要更新該軟件", "系統提示?", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);                if (dr == DialogResult.OK)                {                    //打開下載窗口                    Application.Run(new DownUpdate ());                }                else                {                    //若用戶取消,打開初始界面                    Application.Run(new Login());                }            }        }

2.3 Main.cs(登錄后的主界面)的代碼

這個可以省略,沒有實際意義

2.4 DownUpdate.cs(更新頁面)的代碼

界面顯示如下圖

自動更新代碼如下(其中更新按鈕的name為btnDown,安裝按鈕的name為btnInstall):

//debug目錄,用于存放壓縮文件t        string path = Application.StartupPath;        public DownExe()        {            InitializeComponent();        }        private void DownExe_Load(object sender, EventArgs e)        {            btnInstall.Enabled = false;        }        //下載文件、自動解壓縮文件        private void btnDown_Click(object sender, EventArgs e)        {            //自動下載壓縮包,并且解壓,最后關閉當前進程,進行安裝            try            {                //設置進度條                List<int> resultList = new List<int>();                for (int i = 0; i < 100; i++)                {                    resultList.Add(i);                }                //設置進度條的最大值和最小值                this.progressBar1.Maximum = resultList.Count;                this.progressBar1.Minimum = 0;                foreach (int item in resultList)                {                    //下載壓縮包                    System.Net.WebClient client = new System.Net.WebClient();                    client.DownloadFile(@"http://192.168.1.120/File/setup.rar", path + @"setup.rar");                    this.progressBar1.Value++;                }            }            catch            {                MessageBox.Show("當前沒有網絡或者文件地址不正確");            }            if (!Exists())            {                MessageBox.Show("不支持RAR解壓縮");                return;            }            //解a壓1            try            {                unCompressRAR(path + "http://setup", path, "setup.rar", false);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢龙县| 汨罗市| 海林市| 团风县| 临江市| 英超| 马尔康县| 惠安县| 托克托县| 峨眉山市| 连江县| 定结县| 广饶县| 革吉县| 乳源| 文登市| 铁岭县| 道孚县| 仁化县| 唐河县| 桐乡市| 五河县| 赞皇县| 重庆市| 曲靖市| 灵石县| 策勒县| 德钦县| 青海省| 四平市| 乌兰浩特市| 铜川市| 山阴县| 广南县| 买车| 侯马市| 靖边县| 若尔盖县| 积石山| 达州市| 南召县|