升级程序解决方案

现在假设我们有一个程序想要在广域网上面实现智能升级..
一般情况下会有以下几个步骤:
1.主程序(Process A)启动,主线程继续运行,开辟新线程检测升级服务器有没有新版本提供更新。
2.如果没有版本可以更新,升级线程退出;否则,提示用户是否要进行升级,用户确定升级之后,该线程启动升级程序(Process B)连接升级服务器,然后线程自行退出。
3.升级程序(Process B)连接服务器并与其进行传输交互,将更新文件下载并放到临时temp目录中,主程序(Process A)在此期间一切正常运行。
4.Process B此时已经完成与服务器的传输操作,给出用户提示,表示程序更新,Process A被强行关闭进程,ProcessB将temp目录中的更新文件覆盖原文件.执行完毕重新启动进程Process A,Process B进程自行退出。
5.Process A重新正常运行,此时运行的已经是新版本程序。

系统实现:
1.定义IUpdate接口
2.定义INetServices传输接口
2.设计升级服务器类(实现IUpdate和INetServices接口)
3.设计升级客户端类(实现IUpdate和INetServices接口)

IUpdate接口结构:
interface IUpdate
{
      string GetCurrentVersion();          //得到版本号
      string[] GetFileList();                   //得到文件列表
      byte[] GetSigleFileByName(string FileName);    //得到文件字节流数组
}

INetServices接口结构:
interface INetServices
{
      HostType SocketType{get;}   //Socket类型,这里是一个枚举Server或者Client
      int SocketBufferedSize{get;}  //缓冲区大小
      bool IsConnected{get;}          //是否连接状态
      DateTime ConnectionTime{get; set;}  //连接时间,用于检测是否超时
      string ConnectionID{get;}       //连接ID,可以用Socket的散列做标识
      byte[] RequestCommand{get;set;}  //请求命令类型
      void Connect();                     //连接,如果是Server类则以监听实现,Client类则以连接实现
      void Send(byte[] b);
      byte[] Received();
}

用Server和Client类分别实现以上两个接口和其中的具体方法,然后创建一个新项目调用Server/Client类库。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
版本08.11.03,有详细的帮助文档,完全免费。整个程序才80多K,但功能却不少,非常适合免费软件和共享软件作者。有以下功能: 1. 版本号比较(考虑到可能会有数据方面的升级,因此版本号不从程序自身中取,而是根据需要在配置时设定),同一个软件中允许有多个不同版本的程序或数据。 2. 根据版本号比较结果,从服务器中下载相应程序或数据进行升级,然后使用本地与服务器版本号一致。版本号可以分级,用“.”隔开,级数不限,如10或10.01或100.001.002等等。 3. 可以指定单个文件的存放目录,指定的目录若不存在时将会自动生成。 4. 升级时,如果相关的程序在运行,会自动地将其关闭,以保证升级的顺利进行。 5. 升级文件可以事先压缩好,放到服务器上,下载到本地后再自动进行解压。目前只支持ZIP格式。 6. 可以指定升级完成后自动启动一应用程序,有两种启动模式(常规与强制),同时还可以根据具体情况决定是否需要执行此应用程序。 7. 可以自定义标题栏图标(可以为动画),窗口右侧的图像。 8. 可以自定义自己的提示语(升级启动前后的提示语)。 9. 提供了常规显示、静默显示、无显示三种进度显示方式。 10. 可以指定升级后是否修改相关项的版本号。若设置为不修改,则可以使应用程序每次启动时都能从网络获取相关内容。 11. 应用程序可以通过消息方式获取自动升级完成后的结果。 12. 从版本V08.11.01开始,本软件可以进行自我更新。以后你只要下载最新的版本,放在你的服务器指定位置即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值