日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C#下实现在线升级

發(fā)布時(shí)間:2023/11/29 C# 108 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#下实现在线升级 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//這是一個(gè)webservice

private?AppUpdate.UpdateServ?UpdateSvr;


private?void?button1_Click(object?sender,?System.EventArgs?e)
{
?
if(LinkWebServices()==true)
{
this.label1.Text="連接服務(wù)器.?PASS";

if(CheckVer()==true)
{
this.label2.Text="檢查最新版本并下載.PASS";
?
}

else
{
this.label2.Text="檢查最新版本并下載.FAIL";
}

}

else
{
this.label1.Text="連接服務(wù)器.FAIL";
}

}


//這是用來與升級(jí)服務(wù)器建立連接
private?bool?LinkWebServices()
{
try
{
UpdateSvr
=new?UpdateServ();
return?true;
}

catch
{
return?false;
}

}


//調(diào)用webservice用來檢查是不是有最新的版本
private?bool?CheckVer()
{
string?path?=Application.StartupPath;
try
{
VersionCheck(path);
return?true;
}

catch(Exception?ex)
{
MessageBox.Show(ex.ToString());
return?false;
}

}


private?void?VersionCheck(string?desPath)
{
try
{
查看文件和目錄#region?查看文件和目錄
if(!desPath.EndsWith(@"\"))
desPath?
+=?@"\";

if(!System.IO.Directory.Exists(desPath))
{
System.IO.Directory.CreateDirectory(desPath);
}


string?tempPath?=?desPath?+?@"tempDesPathCache\";

if(System.IO.Directory.Exists(tempPath))
{
System.IO.Directory.Delete(tempPath,
true);
System.IO.Directory.CreateDirectory(tempPath);
}

else
System.IO.Directory.CreateDirectory(tempPath);

if(!System.IO.File.Exists(desPath?+?"UpdateConfig.xml"))
{
System.Xml.XmlDocument?updateConfig?
=?new?System.Xml.XmlDocument();
updateConfig.LoadXml(@
"<root></root>");
updateConfig.Save(desPath?
+?"UpdateConfig.xml");
}

#endregion



System.Xml.XmlDocument?serverXmlDoc?
=?UpdateSvr.AppUpdateVertion();
System.Xml.XmlDocument?localXmlDoc?
=?new?System.Xml.XmlDocument();
localXmlDoc.Load(desPath?
+?"UpdateConfig.xml");
bool?newVersionExist?=?false;
bool?moduleExist?=?false;
System.Xml.XmlNode?serverNode0?
=?serverXmlDoc.ChildNodes[0];
System.Xml.XmlNode?localNode0?
=?localXmlDoc.ChildNodes[0];
foreach(System.Xml.XmlNode?serverNode?in?serverNode0)
{
moduleExist?
=?false;
foreach(System.Xml.XmlNode?localNode?in?localNode0)
{
//找到對(duì)應(yīng)模塊
if(localNode.ChildNodes[0].InnerText?==?serverNode.ChildNodes[0].InnerText)
{
moduleExist?
=?true;
//版本號(hào)判斷
if(localNode.ChildNodes[1].InnerText.CompareTo(serverNode.ChildNodes[1].InnerText)?<?0)
{
newVersionExist?
=?true;
if(System.Configuration.ConfigurationSettings.AppSettings["NetStyle"].ToString()=="internet")
{
DownloadFile(serverNode.ChildNodes[
2].InnerText,tempPath?+?serverNode.ChildNodes[0].InnerText);
}

else
{
DownloadFile(serverNode.ChildNodes[
3].InnerText,tempPath?+?serverNode.ChildNodes[0].InnerText);
}

}

break;
}

}

//沒找到對(duì)應(yīng)模塊
if(false?==?moduleExist)
{

if(System.Configuration.ConfigurationSettings.AppSettings["NetStyle"].ToString()=="internet")
{
DownloadFile(serverNode.ChildNodes[
2].InnerText,tempPath?+?serverNode.ChildNodes[0].InnerText);
}

else
{
DownloadFile(serverNode.ChildNodes[
3].InnerText,tempPath?+?serverNode.ChildNodes[0].InnerText);
}

}

}

//寫入新UpdateConfig.xml升級(jí)完畢后替換
if(newVersionExist)
{
serverXmlDoc.Save(tempPath?
+?"UpdateConfig.xml");
if(DialogResult.Yes?==?MessageBox.Show("有新版本,是否更新?","提示",MessageBoxButtons.YesNo))
{
string[]?dirs?=?System.IO.Directory.GetFiles(tempPath,?"*.*");
string?fileName;
foreach?(string?dir?in?dirs)
{
fileName?
=?((dir.Split(Convert.ToChar(@"\")))[dir.Split(Convert.ToChar(@"\")).Length?-?1]);
if(System.IO.File.Exists(desPath?+?fileName))
{
//TODO:可以支持備份以前版本
System.IO.File.Delete(desPath?+?fileName);
}

//TODO:如果系統(tǒng)正在運(yùn)行,您得停止系統(tǒng),至于如何停止,也許可以使用System.Diagnostics.Process
System.IO.File.Move(dir,desPath?+?fileName);
}

MessageBox.Show(
"升級(jí)完畢");
}

else
{
//TODO:可以支持重新提示升級(jí)
}

}

}

catch(Exception?ex)
{
throw?new?Exception("升級(jí)失敗,原因是:"?+?ex.Message,ex);
}

}


//下載最新的文件

private?void?DownloadFile(string?source,string?fileName)
{
try
{
System.Net.WebClient?myWebClient?
=?new?System.Net.WebClient();
myWebClient.DownloadFile(source,fileName);
}

catch(Exception?ex)
{
throw?new?Exception("下載失敗,原因是:"?+?ex.Message,ex);
}

}

總結(jié)

以上是生活随笔為你收集整理的C#下实现在线升级的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。