利用Github服务器做一个软件自动升级系统
完整原文(含源码):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 atxxx-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服务器做一个软件自动升级系统相关推荐
- 软件自动升级系统:支持exe程序覆盖更新、目录结构、更新更新程序自身、更新sql、执行bat批处理...
软件自动升级系统说明 目录 一. 自动升级需要需要实现些什么?... 1 二. 服务器安装... 2 三. 客户端配置... 4 四. ...
- 如何利用阿里物联网做一个会自动浇水的花盆
简介: 学习物联网一段时间,做过若干练习,但都是从练习角度出发.现在依据实际情况做了个实物,因此就有了这款智能花盆.实现根据土壤湿度进行浇水,以维持在合适水平. 主要功能: 1.收集环境信息(土壤湿度 ...
- 利用Web Services实现软件自动升级
摘 要:软件维护升级工作是软件生命周期最重要的环节.为了解决以往C/S(Client/Server)模式下的客户端软件升级效率低的问题,设计了C/S应用系统自动升级处理程序.该程序利用Web Serv ...
- [转载]利用Web Services实现软件自动升级
[--- 资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力, 如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除.同时本人深表歉意,并致以崇高的谢意! ...
- 如何做一个股票自动交易系统的步骤
如何做一个股票自动交易系统的步骤 1. 数据获取 股票自动交易系统需要获取的数据非常丰富,涉及到市场价格.资金流向.基本面报告等多方面信息.这些数据对于制定交易策略和决策分析至关重要. 首先,对于股票 ...
- github项目怎么运行_利用 GitHub 从零开始搭建一个博客
"NightTeam",一个值得加星标的公众号. 趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域 ...
- 乐鑫Esp32学习之旅⑦ esp32上利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- WPF开发一款软件自动升级组件
前几天介绍了WPF进行自定义窗口的开发,关注的朋友还挺多,超出本人意料,呵呵,那么我就再接再励,在上篇的基础上,讲述一下软件自动升级组件的开发原理,大家时间宝贵,不想搞太长的篇幅,所以尽可能拣重要的说 ...
- 利用 GitHub 从零开始搭建一个博客
"NightTeam",一个值得加星标的公众号. 趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域 ...
- 如何利用 GitHub 从零开始搭建一个博客
趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域名是 nightteam.cn,所以这里官方博客使用了二级域名 blo ...
最新文章
- c语言顺序表有效元素长度,用C语言描述的顺序表类型
- Redis安装异常解决办法
- python2.7 pip安装htmlreport报错_pytest十五:pytest-html 生成 html 报告
- 【solr专题之四】关于VelocityResponseWriter
- C#中几种数据库的大数据批量插入
- iOS上传图片和视频(base64和file)
- 手把手教你在友善之臂tiny4412上用uboot启动Linux内核
- python解释器把python代码一次性翻译成目标代码_Python语言程序设计----【第1周 Python基本语法元素】之1.1 程序设计基本方法...
- 7个现象告诉你手游圈为什么会有寒冬
- java.lang math 类
- CTF 湖湘杯 2018 WriteUp (部分)
- 硬方案——三极管做电源开关时,选型一定注意饱和压降的影响
- 游戏设计情境探秘之声音
- w ndows无法完成格式化,windows 无法完成格式化2种解决方案
- Centos7+Elasticsearch7.4.2+Kibana+IK分词+ElasticHD 安装配置以及集群搭建
- 图片如何进行格式转换?图片格式怎么改成jpg?
- 上帝视角看 TypeScript
- socket PHP:详细简单的socket TCP通信PHP实现
- 一道技术美术的面试题
- mt2503 在MMI版本实现AT+CPBF
热门文章
- 批量打印cad的dwg文件图纸的解决方案
- win10编译OpenCV4Android系列2-编译OpenCV4.5.2+opencv_contrib
- 特朗普签署《美国人工智能倡议》,释放了哪些重要信号?
- 分布式机器学习联邦学习论文阅读笔记(持续更新)
- Raywenderlich: 用 VFX 制作蝴蝶飞起的效果
- ARINC485和RS485的区别
- AndroidVideoCache-视频边播放边缓存的代理策略
- Windows下 Java9安装教程
- java.util.timer_java.util.Timer分析源码了解原理
- 应用安全系列之二十六:应用层DOS攻击