破天一剑客户端下载自动更新程序怎么关闭

& & 做winform的程序,不管用没用过自动更新,至少都想过自动更新是怎么实现的.
& & 我这里共享一个自动更新的一套版本,给还没下手开始写的人一些帮助,也希望有大神来到,给指点优化意见.
& & 本初我是通过socket来传输文件的,后来因为传大文件出现异常,前期又没有定义比较好的协议,后来就改用webservices了.
& & 自动更新分三个部分,服务端(webservice服务,配置与更新),配置客户端(或叫发布客户端),客户端(主程序)
& &&服务端:& & & &&
& & & & ConfigServer.asmx
& & & & & & & & &因为代码共享了,就不传代码了,发个截图吧.
& & & & & & & & &
      负责与配置客户端交互,对文件的发布(软件上传),及版本维护.
      这里为了考虑大文件的问题,每次上传是分包传送的.UploadFileModel 是分包的定义,这个由配置端来决定分包值.
& & & & & & & & &
public class UploadFileModel
string _RelativeP
/// &summary&
/// 相对路径
/// &/summary&
public string RelativePath
_RelativePath =
if (_RelativePath != string.Empty && _RelativePath.Substring(_RelativePath.Length - 1) != "\\")
_RelativePath += "\\";
return _RelativeP
/// &summary&
/// 文件名
/// &/summary&
public string FileName { }
/// &summary&
/// 文件流
/// &/summary&
public byte[] FileStream { }
/// &summary&
/// 开始该文件位置
/// &/summary&
public int StartPosition { }
/// &summary&
/// 是否完成该文件的传送了
/// &/summary&
public bool IsFinish { }
/// &summary&
/// 整个文件流的长度
/// &/summary&
public long FileStreamLength { }
/// &summary&
/// 文件的最后更新时间
/// &/summary&
public DateTime FileLastTime { }
/// &summary&
/// 当前是第几包
/// &/summary&
public int CurrentPackIndex { }
/// &summary&
/// 总共第几包
/// &/summary&
public int MaxPackIndex { }
     & 考虑上传的文件内容有可能含子文件夹,这里有相对路径的配置.
& & & &&UpdateServer.asmx &负责与客户端交互,用于下载需要更新的文件.
      
     & 有两个服务,GetFileList 获取文件列表,与本地文件通过版本号筛选出要更新的文件信息.
& & & & & & & &GetFile 用于更新文件,RequestFileModel 定义了要请求文件的指定长度的文件流(其实也是可以按分包来下载,具体怎么分包是有客户端来定义)
& & & & & & & &
public class RequestFileModel
/// &summary&
/// 文件id
/// &/summary&
public long FileId { }
/// &summary&
/// 开始该文件位置
/// &/summary&
public int StartPosition { }
/// &summary&
/// 读取文件流的长度(一次读取多少字节)
/// &/summary&
public int ReadFileLength { }
& & 配置客户端:
& & &主界面操作比较简单,需要注意的就是发布的时候是选择一个发布文件夹,要发布的文件由该文件夹指定,因为要获取相对路径.
& & & & 上传文件的具体流程代码就不发了,下载源码自己看吧,分包的发送,不过是计算出每次发送的字节,告诉服务器发了多少,是不是完成了.
& & 更新客户端:
& & & 我这写的更新客户端比较简单而已不是自动,需要手动点击,这个根据需求可以稍微改一下,或者干脆不用这个界面,因为上传的相关操作已经封装起来了.
& & & 本地文件信息我是通过一个FileInfo.data的文件来记录的.
& & & 关于app.config里面有三个配置项.
& & & &DownloadPath 是更新的文件放到哪个文件夹下.
& & & &UpdateServerUrl 是webservices的服务地址.
& & & &MainApp 更新完成之后需要更新的主程序,通过Process.Start()方法来调用.
& & & &当所有文件下载完成后,会把FileInfo.data 文件信息更新.
最后总结一下自动更新的整体流程:
& & &1.访问更新服务,获取所有文件信息.
& & &2.比较服务器文件信息,与本地文件信息做比较,筛选出需要下载的文件信息;
& & &3.下载需要更新的文件,保存至指定目录下.
& & &4.如果指定目录存在,将指定目录下的文件替换现有程序文件,删除已更新的文件夹及所有文件,然后启动主程序;
& & &5.启动主程序,并替换更新程序(如果需要更新的话,更新程序会起别名放于相同目录下)
共享代码里webservices端有两个类库,这个数据操作,配置内容是放到sqlite库中的,这两个类库可在bin下找到.
突然看到一个很不错的自动升级项目,来给大家分享一下,&
文件上传下载是基于http,配置及使用看起来很成熟全面.
阅读(...) 评论()如何让客户端程序 自动更新 版本_百度知道
如何让客户端程序 自动更新 版本
升级文件的版本号 </UpdateInfo> <UpdateFileList> /&#47.113/vbroker/log/&quot://192;/升级文件的版本号 //启动的应用程序名 </RestartApp> </AutoUpdater> /&#47.exe&&#47。下载看起来不需要考虑联网的问题;&quot.删除旧的主程序.启动升级程序,升级程序连接到网站,下载新的主程序(当然还包括支持的库文件、XML配置文档等)到临时文件夹;2.升级程序获取服务器端XML配置文件中新版本程序的更新日期或版本号或文件大小;3.升级程序获取原有客户端应用程序的最近一次更新日期或版本号或文件大小,两者进行比较。private string GetTheLastUpdateTime(string Dir) { string LastUpdateTime = &quot?部署很简单;VB40.rar&quot,作用是作为一个升级用的模板;/xml版本号 <AutoUpdater> <URLAddres URL=&
电脑网络爱好者
为您推荐:
其他类似问题
战地风暴的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。看到一篇不错的帖子,可能以后会用到,果断收藏
文章来源 博客园
由于微软提供的更新程序使用不方便,所以又写了此程序。此程序是本人一年前所写的一段程序,当时在开发一个CS版本报价系统,当时由于开发过程仓促,代码可能有点不是太规范此程序编译后只有一下AutoUpdate.exe文件与一个配置文件UpdateList.xml,主要通过本地程序与服务端程序文件的版本号来升级与更新本地程序文件。
UpdateList.xml文件内容如下:
&?xml version=&1.0& encoding=&gb2312&?&
&AutoUpdater&
& &description&Application autoUpdate&/description&
& &Updater&
&&Url&http://10.0.5.98/SoftUpdate/&/Url&
&&LastUpdateTime&&/LastUpdateTime&
& &/Updater&
& &Application applicationId=&ItemSoft&&
&&& &EntryPoint&ItemSoft.exe&/EntryPoint&
&&& &Location&.&/Location&
&&Version&1.0.0.0&/Version&
& &/Application&
&&& &File Ver=&1.0.0.0& Name=&ItemSoft.exe& /&
&&& &File Ver=&1.0.0.0& Name=&Reports\test.txt&/&
&&& &File Ver=&1.0.0.0& Name=&Interop.grproLib.dll&/&
&&& &File Ver=&1.0.0.0& Name=&Reports\test.grf&/&
& &/Files&
&/AutoUpdater&
&description&&/description&&&&&&程序的描述;
&Url&&/Url&&&&&&&&&&&&&&&&&&&&&&&&&&&& 更新服务器地址,为一个虚拟目录或站点路径;
&EntryPoint&&/EntryPoint&&&&&&&需要更新主程序文件,为exe;
&&Location&.&/Location&&&&&&&&&&需要更新主程序文件所在路径;
&Version&1.0.0.0&/Version&&&&主程序版本号;
& &Files&&&/Files&&&&&&&&&&&&&&&&&&&&&&需要更新的文件列表;Ver:文件版本号,Name:文件名,包括路径(相对);
使用时,在更新服务器上新建Web虚拟目录或站点,然后将需要更新的文件与UpdateList.xml放在上面;
本地将AutoUpdate.exe与UpdateList.xml放在主程序的根目录下。本地UpdateList.xml中的版本号如果小于服务端,自动程序会自动下载所需要更新的文件。
本人的完整.Net打包程序下载中所带的项目中,就使用了此更新程序。
源码下载:
二进制文件下载:
生成配置文件UpdateList.xml工具:&(由whatisgood 提供,感谢!!)New
阅读(...) 评论()如何在AD上打开所有客户端自动更新_百度知道
如何在AD上打开所有客户端自动更新
菜单中点击“属性”,点击设备安装设置项目下面的“设备安装设置”操作方法。 第三步、在系统属性对话框: 第一步、对着桌面这台电脑图标单击鼠标右键。 第二步、在系统界面,点击左侧“高级系统设置”
采纳率:92%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c 客户端自动更新 的文章

 

随机推荐