您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > C#升级WinForm系统的完全代码
C#winform升级的详细代码以我以前做过的人事系统(HrManager.exe)为例:★客户端安装目录下,添加一个xml文件,命名为:update.xml。update.xml的内容如下:?xmlversion=1.0encoding=gb2312?AutoUpdaterUrl\\192.168.6.223\UpGrade\/UrlApplicationAppNameHrManager.exe/AppNameAppVersion1.5.1.0/AppVersion/ApplicationFiles/Files/AutoUpdater★以下是更新升级程序的说明以及源代码:在VisualStudio2010中(VS2005以上版本也可以),新建winForms应用程序,命名为Update,删除自动生成的Form1窗体。新建窗体FrmUpdate。在FrmUpdate中放入三个控件:Button:btnUpdate(更新按钮)。ProgressBar:progressBar1(进度条)。RichTextBox:rchtxtInfo。如下图所示:在Update的应用程序的bin\Debug下,添加一个xml文件,命名为update.xml。bin\Debug\update.xml的内容如下:?xmlversion=1.0encoding=gb2312?AutoUpdaterUrl\\192.168.6.223\UpGrade\/UrlApplicationAppNameHrManager.exe/AppNameAppVersion1.6.1.0/AppVersion/ApplicationFilesFileName=hrBll.dllVers=1.0.0.0/FileFileName=HrManager.exeVers=1.0.0.0/FileFileName=HrManager.pdbVers=1.0.0.0/FileFileName=HrManager.vshost.exeVers=1.0.0.0/FileFileName=HrManager.vshost.exe.manifestVers=1.0.0.0/FileFileName=example\排班时间.docVers=1.0.0.0/FileFileName=addFolder\test\test.txtVers=1.0.0.0/FileFileName=addFolder\DataGridView快速导出为Excel.docVers=1.0.0.0/File/Files/AutoUpdater其中Url代表服务器地址,AppName:应用程序名,AppVersion:应用程序版本File需要更新的文件窗体FrmUpdate的代码如下(窗体自动生成的代码不显示,只用绑定btnUpdate按钮的Click事件btnUpdate_Click即可)。★源代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Xml;usingSystem.IO;usingSystem.Net;usingSystem.Diagnostics;namespaceUpdate{publicpartialclassFrmUpdate:Form{publicFrmUpdate(){InitializeComponent();progressBar1.Visible=false;//进?度¨¨条¬?控?件t隐°t藏?}///summary///按ã¡ä钮£¤更¨¹新?的Ì?Click事º?件t////summary///paramname=sender/param///paramname=e/paramprivatevoidbtnUpdate_Click(objectsender,EventArgse){stringappName=GetAppName();//应®|用®?程¨¬序¨°进?程¨¬名?KillAppProcess(appName);//如¨?果?应®|用®?程¨¬序¨°正y在¨²运?行D,ê?则¨°强?行D关?闭À?。¡êFolderBrowserDialogfbd=newFolderBrowserDialog();fbd.Description=请?选?择?程¨¬序¨°所¨´在¨²的Ì?目?录?;fbd.SelectedPath=@E:\Hr;if(fbd.ShowDialog()==DialogResult.OK){//查¨¦看¡ä选?择?的Ì?目?录?是º?否¤?含?有®DHrManager.exeif(!File.Exists(fbd.SelectedPath+\\+appName)){MessageBox.Show(目录错误.请选择应用程序所在的目录,提示º?);return;}stringurl=GetUrl();if(!Directory.Exists(url))//查¨¦看¡ä本À?机¨²客¨ª户¡ì端?能¨¹否¤?连¢?接¨®服¤t务?器¡Â目?录?{MessageBox.Show(无法连接到服务器...,提示);return;}//服¤t务?器¡Â的Ì?update.xml与®?客¨ª户¡ì端?的Ì?update.xml比À¨¨较?版ã?本À?号?是º?否¤?一°?致?stringserverVersion=GetServerVersion();stringclientVersion=GetClientVersion(fbd.SelectedPath);rchtxtInfo.Text=服务器版本:+serverVersion+\n客户端版本:+clientVersion+\n;Application.DoEvents();if(serverVersion==clientVersion){rchtxtInfo.Text=rchtxtInfo.Text+已经是最新版本,不需要更新.\n;Application.DoEvents();return;}//本À?地Ì?版ã?本À?与®?服¤t务?器¡Â版ã?本À?不?一°?致?需¨¨要°a更¨¹新?this.Cursor=Cursors.WaitCursor;progressBar1.Visible=true;//滚?动¡¥条¬?显?示º?Liststringlist=GetUpdateFiles();for(inti=0;ilist.Count;i++){if(DownUpdateFile(url+list[i],fbd.SelectedPath+\\+list[i])==false){rchtxtInfo.Text=rchtxtInfo.Text+更新中出现错误.;this.Cursor=Cursors.Default;return;}}rchtxtInfo.Text=rchtxtInfo.Text+全部更新已完成.;//更¨¹新?本À?地Ì?客¨ª户¡ì端?下?的Ì?update.xml的Ì?版ã?本À?号?,ê?与®?服¤t务?端?版ã?本À?号?一°?致?UpdateLocalXml(fbd.SelectedPath+\\update.xml,serverVersion);progressBar1.Visible=false;//滚?动¡¥条¬?隐°t藏?this.Cursor=Cursors.Default;}}///summary///更¨¹新?本À?地Ì?的Ì?配?置?文?件t的Ì?版ã?本À?号?,使º1版ã?本À?号?与®?服¤t务?器¡Â版ã?本À?一°?致?,这a样¨´下?次ä?就¨ª不?必À?更¨¹新?了¢?////summary///paramname=xmlFile本À?地Ì?xml的Ì?完ª¨º全¨?路¡¤径?/param///paramname=version服¤t务?器¡Â版ã?本À?号?/paramprivatevoidUpdateLocalXml(stringxmlFile,stringversion){XmlDocumentdoc=newXmlDocument();doc.Load(xmlFile);XmlNoderootNode=doc.DocumentElement;for(inti=0;irootNode.ChildNodes.Count;i++){if(rootNode.ChildNodes[i].Name==Application){rootNode.ChildNodes[i].ChildNodes[1].InnerText=version;break;}}doc.Save(xmlFile);}///summary///如¨?果?应®|用®?程¨¬序¨°正y在¨²运?行D,ê?则¨°强?行D关?闭À?。¡ê然¨?后¨®才?能¨¹更¨¹新?////summary///paramname=appName/paramprivatevoidKillAppProcess(stringappName){Process[]allProcess=Process.GetProcesses();foreach(ProcesspinallProcess){//MessageBox.Show(p.ProcessName);//进?程¨¬名?称?没?有®D.exeif(p.ProcessName.ToLower()+.exe==appName.ToLower()){for(inti=0;ip.Threads.Count;i++){p.Threads[i].Dispose();}p.Kill();}}}///summary///获?得Ì?服¤t务?器¡Â下?载?地Ì?址¡¤////summary///returns/returnsprivatestringGetUrl(){XmlDocumentdoc=newXmlDocument();doc.Load(AppDomain.CurrentDomain.BaseDirectory+update.xml);XmlNoderootNode=doc.DocumentElement;returnrootNode.ChildNodes[0].InnerText;}///summary///通ª¡§过yxml文?件t获?得Ì?应®|用®?程¨¬序¨°名?////summary///returns/returnsprivatestringGetAppName(){XmlDocumentdoc=newXmlDocument();doc.Load(AppDomain.CurrentDomain.BaseDirectory+update.xml);XmlNoderootNode=doc.DocumentElement;for(inti=0;irootNode.ChildNodes.Count;i++){if(rootNode.ChildNodes[i].Name==Application){returnrootNode.ChildNodes[i].ChildNodes[0].InnerText;}}return;}///summary///获?得Ì?服¤t务?器¡Â版ã?本À?号?////summary///returns/returnsprivatestringGetS
本文标题:C#升级WinForm系统的完全代码
链接地址:https://www.777doc.com/doc-4700026 .html