实全软件产品自动升级管理解决方案

摘要:
本软件产品自动升级管理解决方案为:使用Winform程序管理各个软件产品信息、版本、产品文件、产品升级跟踪及产品异常跟踪。

实全软件产品自动升级管理解决方案

目 录

1. 描述... 1

2. 产品管理后台系统... 1

2.1. 产品发布... 1

2.2. 产品下载... 2

2.3. 下载日志... 3

2.4. 异常日志... 3

3. 产品Web Service服务接口... 3

3.1. 接口说明... 4

4. 产品升级更新程序... 4

4.1. 产品升级自动更新工具... 5

4.2. 产品版本信息... 5

5. 结语... 6

1. 描述

任何一个开发团队在软件产品的开发、设计中都很难将软件产品做到完美,在有限的时间、人力和物力情况,甚至还存在较多的漏洞时,就得将产品交付客户试用。在软件的使用中,会不断发现问题,这些问题可能是软件本身的毛病;也可能是运行的软、硬件环境的变化造成的;同时用户会有不断的完善产品功能的要求。因此软件产品升级在我们使用的时候变得越来越普遍。对于用户来说,软件升级可以补全漏洞,确保数据安全;可以增加和更新功能,用起来更加得心应手。对于软件开发商来说,为了拓展市场,增强自己的竞争力,也需要不断升级自己的软件,力求做得更好。所以说软件产品的版本控制和自动更新升级功能对于开发和维护有重要的意义。

本软件产品自动升级管理解决方案为:

  • 使用Winform 程序管理各个软件产品信息、版本、产品文件、产品升级跟踪及产品异常跟踪。
  • 使用WEB Service提供产品升级更新接口。
  • 使用Windows 程序和服务程序获取服务器产品升级信息及升级文件,并对产品进行自动更新操作。
2. 产品管理后台系统

使用Winform 程序管理各个软件产品信息、版本、产品文件、产品升级跟踪及产品异常跟踪。

2.1. 产品发布

对产品版本信息进行登记,增加产品文件并进行发布。产品发布后允许产品升级更新程序进行下载更新。提供产品发布前产品信息及产品文件下载,进行测试,以保证产品升级更新程序下载的程序能够正常运行。

实全软件产品自动升级管理解决方案第1张

2.2. 产品下载

产品下载提供产品发版本后的产品信息及产品文件下载,可下载历史版本文件,遇到发布后有重大问题时,允许取消发布,即不允许产品升级更新程序进行下载文件。

实全软件产品自动升级管理解决方案第2张

2.3. 下载日志

下载日志跟踪产品下载日志

2.4. 异常日志

异常日志跟踪产品更新异常日志及程序异常日志,以便产品优化。

3. 产品Web Service服务接口

产品Web Service 服务接口主要提供给产品升级更新程序检查、下载及提交更新日志接口。

3.1. 接口说明

接口名称

接口说明

SQReturnResult GetPReleaseDateTime(string pProductNo)

获取产品最新发版时间。返回说明:成功:0,失败

SQReturnResult GetPReleaseInfo(string pProductNo)

获取产品信息。返回说明:成功:0,失败

SQReturnResult GetProductFile(string pProductNo,string pVersion, string pFileName)

获取产品文件内容。返回说明:成功:0,失败

SQReturnResult GetProductFileByte(string pFileTag)

获取产品文件内容。返回说明:成功:0,失败

SQReturnResult AddError(string pProductNo, string pProductName, string pPVersion

, string pCustomerNo, string pCustomerName, string pErrorClassify, string pErrorTitle, string pErrorRemark)

增加产品异常信息。返回说明:成功:0,失败

4. 产品升级更新程序

实现客户端相关文件的自动更新有多种方法,常见的方法是通过人工的或智能的手段通知客户端有新的软件版本和更新方法,软件使用人员手动从网上下载必要的文件并更新;或者在应用软件的菜单条目中增加自动升级的功能,让使用人员控制软件升级的频率和时机。这些方法在特定条件下应当有它存在的意义和优势,但对那些与数据库有关的管理程序而言,考虑到多客户数据处理的同步与协调问题,如果软件的更新由使用人员掌握,很难保证版本之间数据处理的一致性,并且往往使得开发人员为了考虑前后程序的兼容性束缚了设计思路。因此,本文实现的软件自动升级方法,其中有一个重要的目标是保证软件强制性的升级,而且考虑到使用人员计算机应用能力的参差不齐,力求达到升级过程的无缝过渡。也就是说,使用人员在程序启动的时候,由程序本身检测是否有新的版本需要更新,并在用户完全不知情的情况下替换相关文件,最后又自动重新运行新的主程序。对用户来说,软件升级的过程是程序在后台自动、平滑地实现的,根本不需要关心软件的升级问题,只要放心地使用,完全由开发人员掌握软件的分发、维护、更新、同步等问题。为实现这一关键目标,设计思路应主要包括以下几点:

  • 产品升级更新程序连接服务器获取产品最新发版时间,与本地产品发版时间进行比对。
  • 本地产品发版时间与服务器发版时间不符时,获取产品发版信息。
  • 根据产品发版信息下载服务器产品文件。
  • 将下载的产品文件更新到产品目录。
4.1. 产品升级自动更新工具

实全软件产品自动升级管理解决方案第3张

4.2. 产品版本信息

产品版本信息记录产品版本信息及产品文件信息。同时下载后将保存到产品目录中,以便下次根据此进行判断是否有新的版本需要下载及更新。

实全软件产品自动升级管理解决方案第4张

5. 结语

软件产品自动升级更新管理解决方案目前支持Winform程序,Windows服务程序及控制台程序,对于B/S架构软件产品,产品文件及文件目录比较多,管理产品文件方式进行发布会比程序要复杂;如果打包成一个文件,产品升级更新工具需要对打包文件进行解压,将后续考虑优化。产品升级更新工具只负责下载产品文件及更新文件,对于软件产品需要更新数据库、需要更新注册表等操作,将由软件产品自身处理。

免责声明:文章转载自《实全软件产品自动升级管理解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHPWord生成word实现table合并(colspan和rowspan)Airtest自动化测试工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ICE3.7.3集群安装与部署

ICE3.7.3集群安装与部署前言: 本文ice3.7.3基于ubuntu16.04版安装,如果版本不一致可能造成离线安装包缺少依赖或者依赖版本过低或过高的问题,需要重新下载安装包。本安装包包含openjdk_1.8.0_242无需自己下载安装。 准备五台ubuntu16.04(三台也可以)icegrid-master、icegrid-slave、node...

【安卓开发】为什么不能往Android的Application对象里存储数据

在一个App里面总有一些数据需要在多个地方用到。这些数据可能是一个 session token,一次费时计算的结果等。通常为了避免activity之间传递对象的开销 ,这些数据一般都会保存到持久化存储里面。 有人建议将这些数据保存到 Application 对象里面,这样这些数据对所有应用内的activities可用。这种方法简单,优雅而且……完全扯淡。...

Java 之 调用.Net的 WebService 整理

  最近做一个 java 调用 .net 服务的项目,其中 .net做了一个WebService,需要java来调用。   最开始.net的Service代码如下: using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocol...

postman 发送post请求,参数为json

mvc 控制器接收post请求,参数为json PostMan设置 Headers设置key和Value值 key:Content-Type,Value:application/json。 参数设置: 选中Body并进行参数设置,选择raw,格式为json。就酱 控制器代码: //post 请求测试 [HttpPost] //请求方法,...

vue初级学习--使用 vue-resource 请求数据

一、导语   我发现好像我最近几次写文,都是在7号,很恰巧啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 二、正文   最近用vue做一个订单管理混合开发APP,但是遇到个问题,使用了vueResource的post请求,后端做了跨域解决方...

C#函数可变参数的使用

一般情况下,函数中参数是确定的。但是在某些情况下,函数的参数个数可以根据需要改变而改变,可变参数的函数使用方法是在参数前加params。 以下是我的一个demo: 查看代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Tex...