
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
相信大家都发现了,在使用一些app软件的时候会有自动更新等功能的选项。今天,我们就一起来了解一下,这些app软件的自动更新功能是如何设计的,下面就一起来了解一下具体设计方法吧。
一、问题背景
本地程序在实际项目使用过程中,因为可以操作电脑本地的一些信息,并且对于串口、OPC、并口等数据可以方便的进行收发,虽然现在软件行业看着动不动都是互联网啊啥的,大有Web服务就是高大上的感觉,但是作为本地的应用还是有着非常重要的位置,特别是在制造业工厂里,车间里相关的程序。
抛开一切业务上的功能不谈,本地程序一直比较诟病的地方就是在于软件的更新上,由于程序都在客户端电脑上运行,当需要更新的时候,就不得不由专门的实施人员过去,部署更新,无形中增加项目成本,SO,对于c/s程序的自动更新也是比较苦恼的问题,下面我就来稍微解析下,一个自动更新程序应该要怎么实现(PS:思路可能比较传统,欢迎大家拍砖提供更好的思路)
二、自动更新的关注点
对于一个自动更新程序,关注点应该都是以下几个点:
管理员权限,在win7以后,如果应用位置在C盘的话,每次操作目录都会申请管理员权限,emmmm,所以这个必须要考虑
对于要实现一个较为通用的自动更新,应该要安装了.NetFrameWork的都要可以使用,并且方便使用
更新程序同时要只能启动一个,不然肯定出事儿,虽然很少有会有人去点2次,但是还是要考虑
界面要求上,更新说明以及进度条要显示
很多时候可能我们也是需要一个静默更新的操作
运行更新的时候,记得要关闭运行的程序,不然肯定更新失败
对于更新失败,得有完善的回滚以及备份机制
更新成功后,得可以启动对应的主程序
有些时候程序部分信息是记录在注册表里,如果注册表要修改咋办呢,so,对于注册表也得要支持
有些时候程序更新到后面,会出现一些多余的DLL,这些DLL那也是要干掉滴(虽然觉得有点鸡肋)
大概就是以上的一些点,这些是我自己思考的时候罗列出来的,可能比较乱,大家明白就好
三、设计说明
1、如何让程序尽量的方便集成?
由于自动更新程序必须是要与主程序分开的,所以我们要让主程序启动更新程序的时候,将主程序自己的信息带进去,这样才可以尽可能的做到通用
2、更新前备份
对于自动更新来说,如果更新失败的话,我们需要保证,程序是可回滚的,那就需要在更新前要对程序进行一个备份。
3、更新文件的下载
要更新嘛,那当然得有下载,索性.Net给我们提供了一个非常简单的下载玩意儿,WebClient,给url就下载,绝对不二话,WebClient本身也有不少的事件可以使用,这个大家自己摸索,由于更新可能会存在好几个包一起更新的情况,所以这边使用循环先将所有要更新的下载下来,这部分下载代码还是比较简单的。
作者:Mango
来源:博客园
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。