C/S软件的自动升级部署

简介:

 

升级的原理有好几个,首先无非是将现有版本与最新版本作比较,发现最新的则提示用户是否升级。当然也有人用其它属性比较的,例如:文件大小,或者更新日期。而实现的方法呢?

在.Net时代,我们就有了更多的选择,可以使用WebRequest,也可以使用Web Service。在这里我们将用Web Service来实现软件的自动升级。实现原理:在Web Service中实现一个GetVer的WebMethod方法,其作用是获取当前的最新版本。然后将现在版本与最新版本比较,如果有新版本,则进行升级。步骤如下:

 

1.准备一个作为升级模板用的xml文件(update.xml)。

  View Code

2.Web Service的GetVer方法。

复制代码
[WebMethod(Description="取得更新版本")]
public string GetVer()
{
  XmlDocument doc = new XmlDocument();
  doc.Load(Server.MapPath("update.xml"));
  XmlElement root = doc.DocumentElement;
  return root.SelectSingleNode("version").InnerText;
}
复制代码

3.Web Service的GetUpdateData方法。

  View Code

4.在客户端进行的工作。

首先引用此Web Service,例如命名为:WebSvs
string nVer = Start.GetService.GetVer(); 
if(Application.ProductVersion.CompareTo(nVer)<=0)  update();
在本代码中Start.GetService是WebSvs的一个Static实例。
首先检查版本,将结果与当前版本进行比较,如果为新版本则执行update方法。

复制代码
void update()
{
  this.statusBarPanel1.Text = "正在下载...";
  System.Xml.XmlDocument doc = ((System.Xml.XmlDocument)Start.GetService.GetUpdateData());
  doc.Save(Application.StartupPath + @"\update.xml");
  System.Diagnostics.Process.Start(Application.StartupPath + @"\update.exe");
  Close();
  Application.Exit();
}
复制代码

这里为了简单起见,没有使用异步方法,当然使用异步方法能更好的提高客户体验,这个需要读者们自己去添加。
update的作用是将升级的XML文件下载下来,保存为执行文件目录下的一个update.xml文件。
任务完成,退出程序,等待update.exe 来进行升级。   

5.update.exe的内容

 

  View Code

 

这个代码也很容易懂,首先就是找到主进程,如果没有关闭,则用Process.Kill()来关闭主程序。然后则用一个XmlDocument来Load程序生成的update.xml文件。用xml文件里指定的路径和文件名来生成指定的文件,在这之前先前已经存在的文件删除。更新完毕后,则重新启动主应用程序。这样更新就完成了。

总结: 从这个实例看来,Web Service的工作是很简单的,也是很容易实现的。好好的使用Web Service能够为我们的程序带来很多新的,强的功能。总而言之,.Net是易用的,强大的语言。

 

 

 

 

 

 

 

 

 

参考文章

在WinForm中使用Web Service来实现软件自动升级

 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6379703.html ,如需转载请自行联系原作者



相关文章
|
2月前
|
NoSQL PHP 数据库
Mindoc 安装与部署
Mindoc 安装与部署
68 0
|
9月前
|
运维 Windows
【运维】安装Ghost镜像系统步骤
【运维】安装Ghost镜像系统步骤
【运维】安装Ghost镜像系统步骤
|
11月前
|
运维 Linux 网络安全
无人值守批量部署Linux操作系统
无人值守批量部署Linux操作系统
143 0
|
11月前
|
运维 jenkins 关系型数据库
【2023新windows电脑部署测试环境系列-03】禅道部署
【2023新windows电脑部署测试环境系列-03】禅道部署
|
监控 安全 UED
CleanMyMac X4.11新版本上线及功能介绍
本次新功能上线后,CleanMyMac X 除了管理内存以及应用程序等基础功能之外,新增了可以实时监控 Mac 所有关键区域状态的功能。
122 0
CleanMyMac X4.11新版本上线及功能介绍
|
虚拟化 Windows
安装VMware时警告此产品安装程序不支持降级
安装VMware时警告此产品安装程序不支持降级
3741 0
|
安全 jenkins 持续交付
jenkins2.129新版部署安全性配置
Jenkins配置:添加用户和管理权限 参考文章:http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html 今天给大家说说使用Jenkins专有用户数据库的配置,和一些常用的权限配置。
1381 0
|
运维 Ubuntu Shell
运维调试记录:Ubuntu14.04下部署Opendaylight Nitrogen集群
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaobryant/article/details/79638755 建议参考...
1548 0
|
关系型数据库 MySQL Linux
TriAquae3.0部署安装
TriAquae 3.0安装   安装环境:  centos 6.5 64bit 参考网址:  http://triweb.sinaapp.com/ 下载软件:  http://triweb.sinaapp.
2229 0