如何讓程序自動更新,程序自動更新
自動更新的軟件的目的在於讓客戶不在為了尋找最新軟件花費時間。也不用去到開發商的網站上查找。客戶端的軟件自動會在程序啟動前查找服務器上最新的版本。和自己當前軟件的版本比較,如果服務器的是最新版本。客戶端則進行自動下載、解壓、安裝。當然了下載是要有網絡的,並且用戶可以根據提示去完成操作。再也不用為找不到最新版本的軟件而頭疼。下面是我的大體思路,已經得到了實現:
1、 寫一個webservice,提供一個獲取服務器xml中版本的數據的方法。(也可用其他文件格式, 此處舉例XML)
2、 在WinForm應用程序啟動的時候,首先訪問webservice獲取服務器的xml中的版本號,然後獲取客戶端的xml中的版本號。將兩個版本號比較,若服務器中的版本號大,則提示提示可以在線更新應用程序。
3、 然後客戶端自動下載網絡上的RAR壓縮包到本機的指定位置,進行自動解壓縮。解壓縮完畢之後,用進程打開所解壓過的exe文件進行軟件安裝。同時關閉客戶端軟件所在的進程。
一 web項目中的代碼
首先我給大家先展示下我的web項目中的webservice的代碼,這裡面跟簡單,只有一個方法。項目需要發布到IIS上面。
1.1 webservice中的代碼

![]()
[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