C++实现客户端升级流程

     对于一个客户端软件,升级程序是很常见的,当客户端有新增需求或者bug修复时,后台发布升级版本,前端进行版本比较并进行升级,以实现客户端迭代更新的效果,因此学会如何设计一个简单的客户端升级流程是我们必须要掌握的能力。

一,需求分析

     程序升级最常见的架构就是C/S架构了,包括主程序客户端,升级程序客户端,服务端程序。客户端每次启动向服务端发送请求,获取到最新版本号,与本地版本号进行对比。如果版本一致,那么不需要更新;如果客户端版本号小于服务端版本号,那么就弹出交互界面,询问用户是否需要升级,如果不升级,本次版本检测升级流程结束;如果升级,则让用户选择是“立即升级”和是“静默升级”。这两者区别如下:
1,“立即升级”指的是结束主程序进程,弹出升级界面,升级完成后,覆盖原有文件,并重新启动主程序,一般选择记住用户的账号名和密码,给用户减少操作步骤。
2,“静默升级”指的是升级程序客户端隐藏界面或缩小界面,在后台静默下载需要更新的文件,当下载完成后,既可以再次弹出交互界面,让用户确认是不是立即升级,还是等当次主程序退出后再升级;也可以一直隐藏在后台,等主程序退出后,自动替换更新后的文件,当用户下一次启动时,已经是最新版本。
流程图

二,主程序实现

     主程序启动后,直接调用服务端接口获取到版本号信息,或者下载服务端的版本信息文件,再从文件中解析出版本号,然后与本地的版本号进行对比,如果版本不一致,提示用户升级。如果是“静默升级”,升级程序下载完升级文件后,挂在后台,主程序退出前通知升级程序替换文件;如果是“立即升级”,则主程序退出,并且通过SheelExcuteEx调起升级客户端,升级程序下载完升级文件,立刻替换原有文件。

三,升级程序实现

     升级程序也是一个win32界面程序,因为需要显示更新进度,以及与用户之间的交互。升级程序一般是由主程序拉起来的,但是也存在用户单独启动它,那么这时候升级程序也需要加入服务端版本文件获取,以及本地版本比较等一系列的操作。有两种解决方案:
1,升级程序中也加上版本获取和版本比较的流程,根据它启动的参数来判断,对于控制台程序,int main(int argc, char** argv),argv就是参数;对于界面程序,int _stdcall WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
),lpCmdLine就是启动参数。
2,可以直接去掉主程序中的版本获取和版本比较的流程,将它只放在升级程序中来实现,各种升级交互都是由升级程序来进行的,升级程序可以一直挂在后台进程中。
     个人更倾向于第二种方式。

四,服务端程序实现

     服务端的实现有多种,比如用原生socket实现来进行客户端和服务端的通信,也可以吧服务端做成http服务端。当然更方便的是利用操作系统的特性来达到客户端和服务端的通信以及文件传输功能,因为我本人对windows操作系统熟一点,所以我们的服务端部署在windows server 2008上面,使用的是windows自带的ftp服务器。如何在windows上开启ftp服务功能,请参考我的另一篇博客,不再重复。
ftp服务端目录主要分为一个文件和一个文件夹:
1,版本信息文件
     本文件中主要包含了当前服务端的版本信息,以及升级更新的内容(本次升级主要更新了一下内容:1,…2,…),可以使用ini配置文件和xml文件,具体选择哪一种看个人使用习惯。

2,升级文件夹
     升级文件夹(UploadFile)里存放的是升级需要更新的文件,升级程序判断要升级后首先需要获取到服务端的ftp路径目录,对UploadFile中的每一个文件进行下载操作,保存到升级程序本地。
     这里我之前考虑到的是在版本信息文件里加上需要升级的文件名(路径),由升级程序根据这个配置项去一个个的下载,但是又要考虑到服务端的易操作特点(升级文件的替换可能是由其他人来做),所以还是没有使用这个方法,而是由升级程序自己来遍历目录。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Windows C客户端升级,源码的编写涉及以下几个方面。 首先,确定升级的目标和需求。根据客户需求和产品策略,明确需要升级的功能和改进,例如提高性能、修复漏洞、改善用户体验等。这是源码编写的基础。 其次,分析现有代码。通过仔细阅读现有的客户端源码,理解其中的逻辑和结构,确认哪些部分需要进行修改和优化。 然后,制定升级计划。根据需求和现有代码的分析,制定合理的升级计划。确定各个模块的优化方案,并编写相应的代码。 接下来,开始编写新代码。根据升级计划,逐步实现各个模块的改进。这包括重构现有代码、新增功能、优化性能等。应当注意保持源码的易读性和可维护性。 同时,进行测试和调试。在编写每个模块的代码后,进行全面的测试,确保新的代码达到预期的功能和性能要求。修复可能出现的问题,并进行优化和调整。 最后,进行集成和发布。将所有改动整合到一个完整的代码库中,并进行最终的测试和验证。确保升级后的客户端能够正常工作。完成后,发布新版本的客户端,供用户下载和使用。 总之,Windows C客户端升级源码编写需要进行需求分析、现有代码分析、制定计划、编写新代码、测试调试以及集成发布等一系列步骤。通过严谨的工作流程,确保升级后的客户端能够满足用户需求,并提供更好的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simple Simple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值