问题

单位中使用的管理系统大部分都是自主开发的C/S架构的应用系统,这些系统之前都采用一个两层(客户端<—>数据库)的升级程序。近日,为了应用程序安全起见(两层结构客户端保存了数据库连接字符串),想将应用系统的升级程序替换为一个新写的三层( 客户端 <—>服务器 <—>数据库 )的升级程序。由于单位上应用系统的用户比较多,每个应用系统在用户桌面都有快捷方式,应用系统的主程序名称也不一致,如何快捷有效的替换每个用户计算机中安装的应用系统的升级程序,既不影响用户使用应用系统,又能减少信息化部门的工作量,这就成了问题。
旧升级程序升级过程
旧的升级程序包含一个配置文件,里面配置有连接的数据库服务器名称、升级后启动的应用系统主程序名称。升级过程如下图所示,升级步骤为:

1)用户点击应用系统在桌面上的快捷方式,启动升级程序;

2)升级程序连接数据库,检查是否有更新文件,如果有,则数据库返回待更新的文件列表;
3)升级程序在数据库服务器中将待更新的文件集合下载到本地,并替换本地应用系统安装目录中相应的文件;
4)升级程序更新完毕,调用应用系统主程序,用户开始使用应用系统。
新升级程序升级过程
新的升级程序采用的是 客户端 <—>服务器 <—>数据库三层结构,升级 程序也包含一个配置文件,里面配置有服务器地址、升级后启动的应用系统主程序名称。升级过程如下图所示,升级步骤为:

1)用户点击应用系统在桌面上的快捷方式,启动升级程序;

2)升级程序连接服务器,检查是否有更新文件,服务器连接数据库服务器检查是否有更新文件,如果有,则数据库服务器返回给服务器待更新的文件列表,然后服务器将文件列表返回给客户端的升级程序;
3)升级程序通过服务器在数据库服务器中将待更新的文件集合下载到本地,并替换本地应用系统安装目录中相应的文件;
4)升级程序更新完毕,调用应用系统主程序,用户开始使用应用系统。
示例
假设应用系统代号为TestApp,旧的升级程序名称为OldClientUpdater,旧升级程序连接的数据库服务器为OldDBSrv,新的升级程序名称为NewClientUpdater,新升级程序连接的服务器为WebSrv,连接的数据库服务器为NewDBSrv,应用系统客户端主程序为TestAppClient.exe。
解决方案
解决方案尽量避免到每个用户的计算机上手动替换应用系统的升级程序,那样即影响用户的工作,又增加了信息化部门的工作。经过考虑以及和同事讨论,先后设计了三种方案。
方案一:
1)在 TestAppClient.exe中增加文件删除和文件更名功能;
2)将 NewClientUpdater、 NewClientUpdater的配置文件、  TestAppClient.exe放到OldDBSrv中。
3) 用户点击应用系统在桌面上的快捷方式,启动升级程序 OldClientUpdater ;
4) OldClientUpdater访问OldDBSrv将 NewClientUpdater、 NewClientUpdater的配置文件、  TestAppClient.exe下载到本地;
5)升级完毕, OldClientUpdater启动 应用系统客户端主程序TestAppClient.exe;
6) TestAppClient.exe启动时删除 OldClientUpdater,然后将 NewClientUpdater更名为 OldClientUpdater,升级程序替换完毕。
本方案最大的问题是要在 TestAppClient.exe 中增加文件删除和文件更名功能,对应用系统改动比较大。
方案二
1)单独写一个包含 文件删除和文件更名功能的可执行文件FileReplacer;
2) 在 TestAppClient.exe 中进增加启动FileReplacer程序的代码;
3)将 FileReplacer、 NewClientUpdater、 NewClientUpdater的配置文件、  TestAppClient.exe放到OldDBSrv中。
4) 用户点击应用系统在桌面上的快捷方式,启动升级程序 OldClientUpdater ;
5) OldClientUpdater访问OldDBSrv将 FileReplacer、 NewClientUpdater、 NewClientUpdater的配置文件 、   TestAppClient.exe下载到本地;
6)升级完毕, OldClientUpdater启动 应用系统客户端主程序TestAppClient.exe;
7 )T estAppClient.exe 启动文件替换程序 FileReplacer ;
8) FileReplacer 删除 OldClientUpdater,然后将 NewClientUpdater更名为 OldClientUpdater,升级程序替换完毕。
本方案虽然在 T estAppClient.exe中改动比较少,仅添加了几行代码,但是还是对主程序进行了修改。
方案三
1)复制一份新的 NewClientUpdater,重命名为MiddleClientUpdater;
2) 建立一个新的升级服务器地址为NewWebSrv;
3)将 MiddleClientUpdater配置文件中的服务器地址改为 NewWebSrv、启动程序改为 OldClientUpdater(PS:新) 。
4)修改 OldClientUpdater( PS: 旧)的配置文件,将启动程序改为 MiddleClientUpdater。
5)将 修改后的 OldClientUpdater ( PS: 旧) 配置文件、 MiddleClientUpdater、 MiddleClientUpdater配置文件、 TestAppClient.exe 放到数据库服务器 OldDBSrv中,
6) 复制一份新的 NewClientUpdater,重命名为 OldClientUpdater ( PS: 新) ,将重命名的 OldClientUpdater ( PS: 新) 及其 配置文件放到新的 升级服务器地址NewWebSrv中。
7) 用户点击应用系统在桌面上的快捷方式,启动旧升级程序 OldClientUpdater ( PS: 旧) ;
8) OldClientUpdater ( PS: 旧) 访问OldDBSrv将 修改后的 OldClientUpdater ( PS: 旧 ) 配置文件 、 MiddleClientUpdater 、 MiddleClientUpdater配置文件、 TestAppClient.exe 下载到本地;
9)升级完毕, OldClientUpdater ( PS: 旧) 根据 修改后的 OldClientUpdater ( PS: 旧) 配置文件 启动 MiddleClientUpdater ;
10) MiddleClientUpdater访问 新的升级服务器地址NewWebSrv,将 重命名的 OldClientUpdater ( PS: 新) 及其 配置文件 下载到本地,覆盖旧升级程序 OldClientUpdater ( PS: 旧) ;
11) 升级完毕, MiddleClientUpdater根据配置文件 启动 OldClientUpdater( PS: 新);
12) OldClientUpdater( PS: 新) 访问 升级服务器地址WebSrv,检测是否有更新,如果有更新,将更新文件下载到客户端,进行文件更新;
13) 升级完毕, OldClientUpdater ( PS: 新) 启动 应用系统客户端主程序TestAppClient.exe;
本方案不需要更新应用系统主程序,全程不需要到用户计算机上进行操作,只需要信息化部门简单的操作就可以替换用户计算机上的升级程序,应该是最佳的方案了。
当然如果读者还有更好的方法,我们可以一起讨论,我目前就想到这三种方法替换升级程序。

应用系统如何更新升级程序?相关推荐

  1. android安卓手机升级版本,安卓系统怎么更新升级

    安卓系统怎么更新升级 安卓系统怎么升级?针对该问题,其实安卓系统升级的方法有很多,以下就来与大家介绍下.目前安卓手机主要采用以下几种方式升级: 1.使用手机自带的系统更新功能 在安卓手机的设置--关于 ...

  2. 苹果手机php怎么更新,Apple Watch固件系统怎么更新升级?

    苹果的 Apple Watch 手表,与我们平日里所使用的 iPhone 手机一样,它也有自己的一套独立的系统,名为"Watch OS".当然有了自己的独立系统以后,也就肯定会有后 ...

  3. C# 实现软件自动更新升级程序

    Update.asmx仅提供一个功能,就是检测是否需要更新,在需要更新的时候就返回一个更新地址,通常情况下返回的地址就是Download.ashx,而在某些特殊情况下,也可以修改服务端使之从其他Url ...

  4. Linux系统如何更新升级

    Linux系统更新 今天给大家讲解一下,linux系统更新的简单操作及操作原理 一.升级原理: 系统升级实际上是一个软件包的删除与重装过程,在更新的过程中,apt-get会自动删除旧的软件包,以此在系 ...

  5. 软件自动升级系统:支持exe程序覆盖更新、目录结构、更新更新程序自身、更新sql、执行bat批处理...

    软件自动升级系统说明 目录 一.         自动升级需要需要实现些什么?... 1 二.         服务器安装... 2 三.         客户端配置... 4 四.         ...

  6. 升级鸿蒙系统最新计划,华为鸿蒙系统更新升级方法分享

    在昨晚的鸿蒙操作系统发布会上,华为就正式官宣了关于鸿蒙的百机升级计划,6月份就会有一批手机机型可以支持升级鸿蒙系统.现在很多符合要求的用户都十分期待升级,那么华为鸿蒙系统怎么更新升级呢?下面小编和大家 ...

  7. 华为麦芒5云空间升级_华为麦芒5手机怎么升级?华为手机系统更新升级方法大全...

    我们都知道,无论是苹果的IOS还是安卓系统的手机,厂家为了修复一些BUG或是为了改善我们的用户体验.增加一些手机新功能,都会给我们的智能手机进行一些系统更新升级,这不前段时间华为就爆出为了让更多的华为 ...

  8. Mybatis-Plus升级完成! 我的系统到底更新了什么?Mybatis-Plus比Mybatis好在了哪里?

    Mybatis-Plus升级完成! 我的系统到底更新了什么?Mybatis-Plus比Mybatis好在了哪里? 拖拖沓沓写了将近一个月的系统,总的来说是把自己的Mybatis升级成了Mybatis- ...

  9. android应用程序的自动更新升级(自身升级,通过tomcat),[SaltStack] Minion-conf自动更新...

    minion-conf配置文件自动更新, 加载 minion-conf是每个minion自身以来的配置, 为了方便我们在中心管控机上(Master)统一配置, 然后下发文件, 进而使得Minion能够 ...

最新文章

  1. Ansible YML语法
  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
  3. 吐血总结:AQS到底是什么?
  4. iOS如何查看静态库.a文件支持的cpu类型
  5. BellmanFord
  6. oracle强大函数,oracle 函数排行
  7. Oracle结构组成
  8. Ubuntu 命令技巧
  9. dbv oracle驱动,Oracle的DBV工具
  10. matlab三维极坐标天线方向图,天线方向图(Antenna Pattern)
  11. java经典算法(三)---zws
  12. 软硬件交互 - 扫码枪
  13. 地铁路线程序C语言,个人作业-北京地铁出行路线规划命令行程序完成总结
  14. uniapp实现贪吃蛇小游戏
  15. JavaFx-桌面应用开发利器(二)基础架构篇
  16. 创建oracle数据库到达梦数据库的dblink
  17. 计算机常见故障及排除方法,科学网—计算机常见故障和解决办法 - 李卓哲的博文...
  18. 服务器 控制台 的作用是,电脑中的MMC控制台的作用和用法是什么?
  19. 设置EditText输入的文字全部变成大写或小写方案总结
  20. c 超文本标记语言,网页制作的超文本标记语言称为() - 问答库

热门文章

  1. 中国三维数字城市将遵循武汉标准
  2. Sqli-labs——lesson25(联合查询和报错注入,附各种sql万能密码)
  3. 搭建Windows Deployment Service(WDS)的过程中的一些注意点
  4. java爬取捧腹网段子(多线程版)
  5. DNS服务器怎么保护呢
  6. undefined,null 和 undeclared 有什么区别?
  7. 【mac】MAC电脑下查看CPU详细信息
  8. MoveIt!入门教程 - 创客智造
  9. 微信H5网页链接如何自定义分享标题,简介和图片
  10. MySQL——where字句常用的查询条件及用法