{"id":23087672,"url":"https://github.com/exp-codes/auto-upgrader","last_synced_at":"2025-07-06T13:06:29.733Z","repository":{"id":49963954,"uuid":"131670820","full_name":"EXP-Codes/auto-upgrader","owner":"EXP-Codes","description":"自动化升级插件","archived":false,"fork":false,"pushed_at":"2023-01-16T18:08:10.000Z","size":48391,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-04T08:03:19.976Z","etag":null,"topics":["auto","programming","upgrader"],"latest_commit_sha":null,"homepage":"https://exp-codes.github.io/auto-upgrader/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EXP-Codes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://lyy289065406.github.io/sponsor/"]}},"created_at":"2018-05-01T03:02:56.000Z","updated_at":"2023-10-15T12:14:27.000Z","dependencies_parsed_at":"2023-01-20T09:47:58.558Z","dependency_job_id":null,"html_url":"https://github.com/EXP-Codes/auto-upgrader","commit_stats":null,"previous_names":["lyy289065406/auto-upgrader"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/EXP-Codes/auto-upgrader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fauto-upgrader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fauto-upgrader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fauto-upgrader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fauto-upgrader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EXP-Codes","download_url":"https://codeload.github.com/EXP-Codes/auto-upgrader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fauto-upgrader/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263905746,"owners_count":23527972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto","programming","upgrader"],"created_at":"2024-12-16T19:59:36.913Z","updated_at":"2025-07-06T13:06:29.712Z","avatar_url":"https://github.com/EXP-Codes.png","language":"Java","readme":"# auto-upgrader\r\n\r\n\u003e \u003cb\u003e升级补丁列表\u0026nbsp;:\u0026nbsp;\u003c/b\u003e[[ Management-Page ]](https://lyy289065406.github.io/auto-upgrader/)\r\n\r\n\r\n------\r\n\r\n## 运行环境\r\n\r\n![](https://img.shields.io/badge/JDK-1.8%2B-brightgreen.svg)\r\n\r\n![](https://img.shields.io/badge/Platform-Windows-brightgreen.svg) ![](https://img.shields.io/badge/Platform-Mac-brightgreen.svg)\r\n\r\n\r\n## 插件介绍\r\n\r\n此插件是供开发者使用的，通过它可以利用 Github 服务器发布若干个应用的升级补丁。\r\n\r\n然后这些应用可以通过 Github 服务器提取自身的升级补丁实现在线升级。\r\n\r\n\r\n## 实现原理\r\n\r\n![实现原理](./imgs/01-软件自动升级原理.png)\r\n\r\n\r\n在 Github的 每个 Repository 都是可以发布一个静态页面的，而且这个静态页面可以在公网访问。\r\n\r\n这个静态页面初衷是用来介绍 Repository 的，但是也可以利用它作为一个静态服务页，实现其他功能。\r\n\r\n\r\n\u003e **为某个Repository发布静态页面的方法：**\r\n\u003cbr/\u003e　　（1） 打开这个Repository的仓库首页\r\n\u003cbr/\u003e　　（2） 进入 `Settings` 页面\r\n\u003cbr/\u003e　　（3） 找到 `GitHub Pages`，在 `Source`下面有一个下拉框， 默认是 `None`， 修改为 `master branch`\r\n\u003cbr/\u003e　　（4） 然后刷新 `Settings` 页面，在 `GitHub Pages` 的位置会提示：Your site is published at `xxx-url`\r\n\u003cbr/\u003e　　（5） 在Repository根目录新建一个 `index.html` 文件，写入页面内容，就可以通过这个 `xxx-url` 访问它了\r\n\r\n\r\n回到这个插件，其实原理就很简单了，要实现的功能主要有两个：\r\n\r\n- （在开发环境）通过更新 `index.html`，在 `xxx-url` 静态页面维护若干个应用的版本信息和升级补丁\r\n- （在生产环境）应用从 `xxx-url` 静态页面提取比当前版本更高的补丁，下载并进行升级\r\n\r\n\r\n## 使用方式\r\n\r\n由于插件存在两部分功能，因此使用方式也是对应拆分为两部分。\r\n\r\n\r\n\u003cbr/\u003e　**（开发环境）在 `xxx-url` 静态页面维护应用的版本信息和升级补丁：**\r\n\r\n1. 通过 git 命令 clone 这个插件仓库到本地\r\n2. 修改 `src/main/resources/exp/au/au_conf.xml` 中的版本补丁管理页面为你的 `xxx-url` \r\n3. 准备好某个应用在升级到下一个版本时需要用到的文件，随便放在一个目录内\r\n4. 运行 `exp.au.PatchMaker`，通过UI读取这个目录，制作升级补丁：\u003cbr/\u003e\r\n![制作升级补丁](./imgs/02-制作升级补丁.png)\r\n5. 制作补丁的过程根据 UI 的指引去操作即可，简单来说就是告诉升级程序，应用程序在升级时，需要新增、删除、替换、移动哪些文件。点击 `一键生成补丁` 按钮后，会在 `./patches-for-page/%应用名称%/%补丁版本%` 目录下生成补丁包，同时会更新 `./index.html` 静态页面中的补丁列表。\r\n6. 通过 git 提交变更，即成功把应用的版本信息和升级补丁提交到了 Github 服务器\r\n7. 此时刷新静态页面地址 `xxx-url`，会发现页面内容已变更，如：\r\n![补丁列表](./imgs/03-静态页面的升级补丁列表.png)\r\n\r\n\r\n\r\n\u003cbr/\u003e　**（生产环境）应用从 `xxx-url` 静态页面下载高版本补丁并升级：**\r\n\r\n1. 通过 `maven install` 命令发布本插件作为 jar构件，目标应用通过 pom.xml 依赖此构件：\r\n\r\n```xml\r\n\u003cdependency\u003e\r\n    \u003cgroupId\u003ecom.exp-blog\u003c/groupId\u003e\r\n    \u003cartifactId\u003eauto-upgrader\u003c/artifactId\u003e\r\n    \u003cversion\u003e${LATEST_VERSION}\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\n2. 构件内提供了 API：`exp.au.api.AppVerInfo.existNewVersion()` ，可据此检查 `xxx-url` 中是否存在新版本补丁\r\n3. 构件内提供了 API：`exp.au.api.AppVerInfo.export()` ，让其在应用的 main 方法中执行，可在应用每次运行时导出其版本信息到 `./conf/au.ver` 文件，同时在应用根目录生成 `软件升级.exe` 用于升级\r\n4. 运行 `软件升级.exe` 会连接到你的版本补丁管理页面 `xxx-url` ，点击 `检查更新` 按钮会与 `./conf/au.ver` 文件记录的当前版本进行比较，若存在更高版本时，点击 `一键升级` 按钮即可自动下载补丁文件并安装升级，如：\u003cbr/\u003e\r\n![应用升级](./imgs/04-应用升级.png)\r\n5. 另外，下载的升级补丁会保存到 `./patches` 目录，升级成功后会自动删除\r\n\r\n","funding_links":["https://lyy289065406.github.io/sponsor/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexp-codes%2Fauto-upgrader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexp-codes%2Fauto-upgrader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexp-codes%2Fauto-upgrader/lists"}