完整原文(含源码):Github
(转载请注明出处,仅供分享学习,严禁用于商业用途)


声明

  • 写这个插件纯粹是出于学习目的,此博文主要作用是功能展示
  • 未经允许禁止出于商用目的使用此插件,违者列入授权黑名单并公开示众,所带来的一切后果自负

环境


简介

此插件是供开发者使用的,通过它可以利用Github服务器发布若干个应用的升级补丁。

然后这些应用可以通过Github服务器提取自身的升级补丁实现在线升级。


实现原理

在Github的每个Repository都是可以发布一个静态页面的,而且这个静态页面可以在公网访问。

这个静态页面初衷是用来介绍Repository的,但是也可以利用它作为一个静态服务页,实现其他功能。

为某个Repository发布静态页面的方法:
  (1) 打开这个Repository的仓库首页
  (2) 进入 Settings 页面
  (3) 找到 GitHub Pages,在 Source下面有一个下拉框, 默认是 None, 修改为 master branch
  (4) 然后刷新 Settings 页面,在 GitHub Pages 的位置会提示:Your site is published at xxx-url
  (5) 在Repository根目录新建一个 index.html 文件,写入页面内容,就可以通过这个 xxx-url 访问它了


回到这个插件,其实原理就很简单了,要实现的功能主要有两个:

  • (在开发环境)通过更新 index.html,在 xxx-url 静态页面维护若干个应用的版本信息和升级补丁
  • (在生产环境)应用从 xxx-url 静态页面提取比当前版本更高的补丁,下载并进行升级

使用方式

由于插件存在两部分功能,因此使用方式也是对应拆分为两部分。


 (开发环境)在 xxx-url 静态页面维护应用的版本信息和升级补丁:

  • 01. 通过 git 命令 clone 这个插件仓库到本地,并通过 Eclipse 导入这个插件项目
  • 02. 修改 src/main/resources/exp/au/au_conf.xml 中的版本补丁管理页面为你的 xxx-url
  • 03. 准备好某个应用在升级到下一个版本时需要用到的文件,随便放在一个目录内
  • 04. 运行 exp.au.PatchMaker,通过UI读取这个目录,制作升级补丁:

  • 05. 制作补丁的过程根据UI的指引去操作即可,简单来说就是告诉升级程序,应用程序在升级时,需要新增、删除、替换、移动哪些文件。点击 一键生成补丁 按钮后,会在 ./patches-for-page/%应用名称%/%补丁版本% 目录下生成补丁包,同时会更新 ./index.html 静态页面中的补丁列表。
  • 06. 通过 git 提交变更,即成功把应用的版本信息和升级补丁提交到了 Github服务器
  • 07. 此时刷新静态页面地址 xxx-url,会发现页面内容已变更,如:

 (生产环境)应用从 xxx-url 静态页面下载高版本补丁并升级:

  • 01. 通过 maven install 命令发布本插件作为 jar构件,目标应用通过 pom.xml 依赖此构件:
<dependency><groupId>exp.au</groupId><artifactId>auto-upgrader</artifactId><version>1.0</version>
</dependency>
  • 02. 构件内提供了API:exp.au.api.AppVerInfo.existNewVersion() ,可据此检查 xxx-url 中是否存在新版本补丁
  • 03. 构件内提供了API:exp.au.api.AppVerInfo.export() ,让其在应用的main方法中执行,可在应用每次运行时导出其版本信息到 ./conf/au.ver 文件,同时在应用根目录生成 软件升级.exe 用于升级
  • 04. 运行 软件升级.exe 会连接到你的版本补丁管理页面 xxx-url ,点击 检查更新 按钮会与 ./conf/au.ver 文件记录的当前版本进行比较,若存在更高版本时,点击 一键升级 按钮即可自动下载补丁文件并安装升级,如:

  • 05. 另外,下载的升级补丁会保存到 ./patches 目录,升级成功后会自动删除

版权声明

  • Site: http://exp-blog.com
  • Mail: 289065406@qq.com

利用Github服务器做一个软件自动升级系统相关推荐

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

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

  2. 如何利用阿里物联网做一个会自动浇水的花盆

    简介: 学习物联网一段时间,做过若干练习,但都是从练习角度出发.现在依据实际情况做了个实物,因此就有了这款智能花盆.实现根据土壤湿度进行浇水,以维持在合适水平. 主要功能: 1.收集环境信息(土壤湿度 ...

  3. 利用Web Services实现软件自动升级

    摘 要:软件维护升级工作是软件生命周期最重要的环节.为了解决以往C/S(Client/Server)模式下的客户端软件升级效率低的问题,设计了C/S应用系统自动升级处理程序.该程序利用Web Serv ...

  4. [转载]利用Web Services实现软件自动升级

    [---  资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力, 如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除.同时本人深表歉意,并致以崇高的谢意! ...

  5. 如何做一个股票自动交易系统的步骤

    如何做一个股票自动交易系统的步骤 1. 数据获取 股票自动交易系统需要获取的数据非常丰富,涉及到市场价格.资金流向.基本面报告等多方面信息.这些数据对于制定交易策略和决策分析至关重要. 首先,对于股票 ...

  6. github项目怎么运行_利用 GitHub 从零开始搭建一个博客

    "NightTeam",一个值得加星标的公众号. 趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域 ...

  7. 乐鑫Esp32学习之旅⑦ esp32上利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  8. WPF开发一款软件自动升级组件

    前几天介绍了WPF进行自定义窗口的开发,关注的朋友还挺多,超出本人意料,呵呵,那么我就再接再励,在上篇的基础上,讲述一下软件自动升级组件的开发原理,大家时间宝贵,不想搞太长的篇幅,所以尽可能拣重要的说 ...

  9. 利用 GitHub 从零开始搭建一个博客

    "NightTeam",一个值得加星标的公众号. 趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域 ...

  10. 如何利用 GitHub 从零开始搭建一个博客

    趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域名是 nightteam.cn,所以这里官方博客使用了二级域名 blo ...

最新文章

  1. c语言顺序表有效元素长度,用C语言描述的顺序表类型
  2. Redis安装异常解决办法
  3. python2.7 pip安装htmlreport报错_pytest十五:pytest-html 生成 html 报告
  4. 【solr专题之四】关于VelocityResponseWriter
  5. C#中几种数据库的大数据批量插入
  6. iOS上传图片和视频(base64和file)
  7. 手把手教你在友善之臂tiny4412上用uboot启动Linux内核
  8. python解释器把python代码一次性翻译成目标代码_Python语言程序设计----【第1周 Python基本语法元素】之1.1 程序设计基本方法...
  9. 7个现象告诉你手游圈为什么会有寒冬
  10. java.lang math 类
  11. CTF 湖湘杯 2018 WriteUp (部分)
  12. 硬方案——三极管做电源开关时,选型一定注意饱和压降的影响
  13. 游戏设计情境探秘之声音
  14. w ndows无法完成格式化,windows 无法完成格式化2种解决方案
  15. Centos7+Elasticsearch7.4.2+Kibana+IK分词+ElasticHD 安装配置以及集群搭建
  16. 图片如何进行格式转换?图片格式怎么改成jpg?
  17. 上帝视角看 TypeScript
  18. socket PHP:详细简单的socket TCP通信PHP实现
  19. 一道技术美术的面试题
  20. mt2503 在MMI版本实现AT+CPBF

热门文章

  1. 批量打印cad的dwg文件图纸的解决方案
  2. win10编译OpenCV4Android系列2-编译OpenCV4.5.2+opencv_contrib
  3. 特朗普签署《美国人工智能倡议》,释放了哪些重要信号?
  4. 分布式机器学习联邦学习论文阅读笔记(持续更新)
  5. Raywenderlich: 用 VFX 制作蝴蝶飞起的效果
  6. ARINC485和RS485的区别
  7. AndroidVideoCache-视频边播放边缓存的代理策略
  8. Windows下 Java9安装教程
  9. java.util.timer_java.util.Timer分析源码了解原理
  10. 应用安全系列之二十六:应用层DOS攻击