软件简单升级方式:文件覆盖
2011-04-20 13:34
239 查看
客户端软件最简单又有效的升级方式就是下载最新的安装包并覆盖安装,这种方式适用于软件的阶段性更新(变动较多),如果更新频繁而每次变动不多,就比较浪费用户下载的时间;其次是打升级补丁,只对有变动的部分打包,补丁多了会难以维护,这时可以辅以前一种方式;还有更简单的情形,就是只更新部分文件就可以了,只是安装包工具所支持的快捷方式、文件权限、注册服务等功能也没有了。
更新部分文件的方式对服务器的需求很简单,只需要以文件服务器的形式提供最新版本信息、更新文件列表、更新文件下载即可,最新版本信息和更新文件列表可由xml文件表示,只需要两个元素:latestVersion表示最新版本号,file表示程序文件的版本信息;而file包含三个属性:version表示文件最新版本,name表示文件相对路径,md5表示校验值。客户端检查最新版本号后判断是否有可用更新,如果有则计算出需要更新的文件集合,它们的版本号version比客户端版本号高,然后通过相对路径name下载更新文件,再通过校验值md5检查文件正确性,最后覆盖文件完成更新。相对路径既是相对于程序目录的文件路径,也是相对于服务器下载更新文件的base目录,此目录下有最新版本信息文件latest-version.xml。file可以是目录或文件,md5可取特殊值表示删除或清空。
执行更新的部分不能更新自己,需要另一个专用的更新模块来更新它,这样它们就可以相互更新。对于java客户端,它们可以分别叫做Starter和Updater,主程序App可由Starter更新并运行,Updater可以更新Starter。在Windows 7下还有一个好处,Updater可以要求总是以Administrator身份运行,而Starter可由标准用户运行,这时可以将下载的任务交给Updater,它写Program Files目录就没有问题了。Windows 7会检查可执行程序的附加信息manifest来判断是否弹出权限提升的提示,其次用户还可以手动用右键菜单要求“以管理员身份运行”,否则程序对特殊保护位置的写入会默默失败。
更新部分文件的方式对服务器的需求很简单,只需要以文件服务器的形式提供最新版本信息、更新文件列表、更新文件下载即可,最新版本信息和更新文件列表可由xml文件表示,只需要两个元素:latestVersion表示最新版本号,file表示程序文件的版本信息;而file包含三个属性:version表示文件最新版本,name表示文件相对路径,md5表示校验值。客户端检查最新版本号后判断是否有可用更新,如果有则计算出需要更新的文件集合,它们的版本号version比客户端版本号高,然后通过相对路径name下载更新文件,再通过校验值md5检查文件正确性,最后覆盖文件完成更新。相对路径既是相对于程序目录的文件路径,也是相对于服务器下载更新文件的base目录,此目录下有最新版本信息文件latest-version.xml。file可以是目录或文件,md5可取特殊值表示删除或清空。
执行更新的部分不能更新自己,需要另一个专用的更新模块来更新它,这样它们就可以相互更新。对于java客户端,它们可以分别叫做Starter和Updater,主程序App可由Starter更新并运行,Updater可以更新Starter。在Windows 7下还有一个好处,Updater可以要求总是以Administrator身份运行,而Starter可由标准用户运行,这时可以将下载的任务交给Updater,它写Program Files目录就没有问题了。Windows 7会检查可执行程序的附加信息manifest来判断是否弹出权限提升的提示,其次用户还可以手动用右键菜单要求“以管理员身份运行”,否则程序对特殊保护位置的写入会默默失败。
相关文章推荐
- android studio最简单的更新方式(像普通软件一样直接在线升级,谁说as不能在线升级的???)
- SmartAssembly,用一行代码和简单的配置文件,几分钟轻松搞定客户端软件的自动升级。
- 简单方式下载网页中的文件存储在本地物理路径,或转成字节数组存入数据库中
- 【lizhi125】Cameyo - 简单几步轻松制作单文件绿色版软件!
- 利用系统中已经安装的软件选择文件的打开方式
- 关于软件防止破解的思考,如何避免简单的跳转指令型的验证方法,如何设置更复杂的验证方式。
- Android简单的软件app更新升级
- Linux(cent OS)下软件包管理-rpm命令管理-包命名与依赖性/安装升级与依赖/查询/校验与文件提取
- 如何不安装opencvManager运行opencv软件(不是那种简单的jni方式)
- Java语言实现简单FTP软件------>远程文件管理模块的实现(十)
- eclipse更改过文件之后,准确定位到更改了哪些文件,即哪些文件需要升级(如直接覆盖public_html)。
- centos vim 7.3 升级 + vim 简单配置文件
- java简单多线程方式+实现文件上传(spring mvc + jquery.form.js 框架)
- Installshield如何实现升级覆盖文件
- [开发故事]第一回:用简单方式,实现多个可执行文件的合并和执行?
- STM32的简单的SD卡读写(不带文件系统,SPI方式)
- Java读取文件内容并输出的最简单的方式之一(只需三行代码)
- MDK 生成BIN文件 最简单方式
- Linux 系统使用 iso 镜像文件或光盘配置本地YUM 源的最简单方式
- Qt输出打印信息的日志到文件(简单的两种方式)