C# 下实现在线升级

转的,还没有测试

  1 // 这是一个webservice
  2
  3 private  AppUpdate.UpdateServ  UpdateSvr;
  4
  5
  6    private   void  button1_Click( object  sender, System.EventArgs e)
  7    {
  8
  9   if(LinkWebServices()==true)
 10   {
 11    this.label1.Text=“连接服务器. PASS“;
 12
 13    if(CheckVer()==true)
 14    {
 15     this.label2.Text=“检查最新版本并下载.PASS“;
 16
 17    }

 18    else
 19    {
 20     this.label2.Text=“检查最新版本并下载.FAIL“;
 21    }

 22   }

 23   else
 24   {
 25    this.label1.Text=“连接服务器.FAIL“;
 26   }

 27  }

 28
 29 // 这是用来与升级服务器建立连接
 30    private   bool  LinkWebServices()
 31    {
 32   try
 33   {
 34    UpdateSvr=new UpdateServ();
 35    return true;
 36   }

 37   catch
 38   {
 39    return false;
 40   }

 41  }

 42
 43 // 调用webservice用来检查是不是有最新的版本
 44    private   bool  CheckVer()
 45    {
 46   string path =Application.StartupPath;
 47   try
 48   {
 49    VersionCheck(path);
 50    return true;
 51   }

 52   catch(Exception ex)
 53   {
 54    MessageBox.Show(ex.ToString());
 55    return false;
 56   }

 57  }

 58
 59    private   void  VersionCheck( string  desPath)
 60    {
 61   try
 62   {
 63    查看文件和目录#region 查看文件和目录
 64    if(!desPath.EndsWith(@“\“))
 65     desPath += @“\“;
 66
 67    if(!System.IO.Directory.Exists(desPath))
 68    {
 69     System.IO.Directory.CreateDirectory(desPath);
 70    }

 71
 72    string tempPath = desPath + @“tempDesPathCache\“;
 73
 74    if(System.IO.Directory.Exists(tempPath))
 75    {
 76     System.IO.Directory.Delete(tempPath,true);
 77     System.IO.Directory.CreateDirectory(tempPath);
 78    }

 79    else
 80     System.IO.Directory.CreateDirectory(tempPath);
 81
 82    if(!System.IO.File.Exists(desPath + “UpdateConfig.xml“))
 83    {
 84     System.Xml.XmlDocument updateConfig = new System.Xml.XmlDocument();
 85     updateConfig.LoadXml(@“〈root〉〈/root〉“);
 86     updateConfig.Save(desPath + “UpdateConfig.xml“);
 87    }

 88    #endregion

 89
 90
 91    System.Xml.XmlDocument serverXmlDoc = UpdateSvr.AppUpdateVertion();
 92    System.Xml.XmlDocument localXmlDoc = new System.Xml.XmlDocument();
 93    localXmlDoc.Load(desPath + “UpdateConfig.xml“);
 94    bool newVersionExist = false;
 95    bool moduleExist = false;
 96    System.Xml.XmlNode serverNode0 = serverXmlDoc.ChildNodes[0];
 97    System.Xml.XmlNode localNode0 = localXmlDoc.ChildNodes[0];
 98    foreach(System.Xml.XmlNode serverNode in serverNode0)
 99    {
100     moduleExist = false;
101     foreach(System.Xml.XmlNode localNode in localNode0)
102     {
103      //找到对应模块
104      if(localNode.ChildNodes[0].InnerText == serverNode.ChildNodes[0].InnerText)
105      {
106       moduleExist = true;
107       //版本号判断
108       if(localNode.ChildNodes[1].InnerText.CompareTo(serverNode.ChildNodes[1].InnerText) 〈 0)
109       {
110        newVersionExist = true;
111        if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
112        {
113         DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
114        }

115        else
116        {
117         DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
118        }

119       }

120       break;
121      }

122     }

123     //没找到对应模块
124     if(false == moduleExist)
125     {
126
127      if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
128      {
129       DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
130      }

131      else
132      {
133       DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
134      }

135     }

136    }

137    //写入新UpdateConfig.xml升级完毕后替换
138    if(newVersionExist)
139    {
140     serverXmlDoc.Save(tempPath + “UpdateConfig.xml“);
141     if(DialogResult.Yes == MessageBox.Show(“有新版本,是否更新?“,“提示“,MessageBoxButtons.YesNo))
142     {
143      string[] dirs = System.IO.Directory.GetFiles(tempPath, “*.*“);
144      string fileName;
145      foreach (string dir in dirs)
146      {
147       fileName = ((dir.Split(Convert.ToChar(@“\“)))[dir.Split(Convert.ToChar(@“\“)).Length - 1]);
148       if(System.IO.File.Exists(desPath + fileName))
149       {
150        //TODO:可以支持备份以前版本
151        System.IO.File.Delete(desPath + fileName);
152       }

153       //TODO:如果系统正在运行,您得停止系统,至于如何停止,也许可以使用System.Diagnostics.Process
154       System.IO.File.Move(dir,desPath + fileName);
155      }

156      MessageBox.Show(“升级完毕“);
157     }

158     else
159     {
160      //TODO:可以支持重新提示升级
161     }

162    }

163   }

164   catch(Exception ex)
165   {
166    throw new Exception(“升级失败,原因是:“ + ex.Message,ex);
167   }

168  }

169
170 // 下载最新的文件
171
172    private   void  DownloadFile( string  source, string  fileName)
173    {
174   try
175   {
176    System.Net.WebClient myWebClient = new System.Net.WebClient();
177    myWebClient.DownloadFile(source,fileName);
178   }

179   catch(Exception ex)
180   {
181    throw new Exception(“下载失败,原因是:“ + ex.Message,ex);
182   }

183  }

184
185 该文章转载自网络大本营:http: // www.xrss.cn/Dev/DotNet/200722310638.Html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值