这是一个基于 GitHub Releases 的按需下载 / 更新脚本仓库。
核心文件:
auto_update.py:按apps.json配置抓取版本、下载安装包、按需启动安装程序apps.json:应用配置清单,已按windows/darwin/linux分平台维护run_update.bat:Windows 下的一键运行入口
要求:
- Python 3.6+
- 能访问 GitHub 或配置里使用的镜像站
安装依赖:
pip install -r requirements.txt直接运行:
run_update.bat它会自动:
- 检查 Python
- 安装依赖
- 执行
python auto_update.py
在仓库目录执行:
python auto_update.py默认行为:
- 自动识别当前系统平台
- 只读取
apps.json -> platforms -> 当前平台 - 只处理其中
enabled: true的应用 - 发布页会先用条目里的
releases_url,失败时会自动回退到 GitHub 官方 Releases 页,再视情况回退到 GitHub API - 版本号优先按发布页里的
releases/tag/<tag>提取,避免被页面标题或latestAPI 误判
打开 apps.json,找到对应平台下的应用,把:
"enabled": false改成:
"enabled": true例如你想启用 Windows 下的 Node.js,可查看 apps.json 中的 nodejs 条目。
如果你想启用独立版本的 Python Standalone,可查看:
- python_standalone_3_10
- python_standalone_3_11
- python_standalone_3_12
- python_standalone_3_13
- python_standalone_3_14
改完后运行:
python auto_update.py只处理某几个已经启用的应用:
python auto_update.py obsidian vscodium nodejs如果应用没有启用,脚本会提示该 id 不存在或未启用。
即使你当前不是该系统,也可以强制读取某个平台块:
python auto_update.py --platform windows
python auto_update.py --platform darwin
python auto_update.py --platform linux也可以组合指定应用:
python auto_update.py nodejs --platform windows如果镜像站证书异常,可以临时关闭证书校验:
python auto_update.py --insecure或者在 apps.json 根级配置里设置:
"ssl_verify": false注意:关闭证书校验有安全风险,证书恢复正常后建议改回 true。
现在脚本对发布页抓取增加了自适应策略:
- 先访问应用条目里的
releases_url - 如果镜像返回 403、5xx 或不可访问,会自动回退到
https://github.com/<owner>/<repo>/releases - 如果页面能打开但没解析到合适的安装包,还会继续尝试 GitHub API
- 如果页面标题不是纯版本号,会优先从发布链接里的 tag 提取真实版本
- 如果页面版本和 API 的
latest不一致,会优先按页面识别到的 tag 去请求对应版本的 API
也可以在 apps.json 根级增加可选配置:
"release_page_mirrors": [
"https://github.com",
"https://你的自建镜像域名"
]脚本会按顺序尝试这些发布页来源。
默认下载到仓库当前目录,由 apps.json 中的:
"download_dir": "."控制。
你可以改成绝对路径或相对路径,例如:
"download_dir": "downloads"每条应用至少需要:
idreleases_urlrepo_path
常见可选字段:
enabled:是否参与批量处理installer_markers:在发布页里识别安装包链接的关键字download_names:兜底拼接下载地址时使用的文件名模板download_url_templates:自定义备用下载地址模板,支持{ver}和{ver_plain}save_name:本地保存文件名模板windows_installer:Windows 安装包模式installer_extensions:如.exe、.msiprocess_name:安装前要结束的进程名kill_before_install:安装前是否先结束进程run_installer:是否下载完成后自动启动安装程序url_hint:页面兜底搜索时使用的关键字href_exclude_substrings:排除不需要的链接installer_markers_match_all:要求多个关键字同时命中,适合多版本资产筛选prefer_api_assets:优先从 GitHub API 资产列表中选包,适合超多附件的仓库release_page_mirrors:根级可选,附加发布页镜像列表
目前仓库里的应用条目已经扩充到 500+,但分两类:
- 一类是像
obsidian、vscodium、nodejs这样带完整下载规则的条目,可以直接用于自动下载 - 另一类是新补充的目录型条目,先用于扩展覆盖面,只有基础字段,后续如果要稳定自动下载,还需要继续补
installer_markers、download_names、save_name等规则
这意味着:
- 想立即使用,优先启用已经带完整规则的应用
- 想让某个新条目真正可自动下载,需要继续补齐该应用的安装包匹配规则
python_standalone_*属于可直接下载的预编译运行时条目,但下载结果是压缩包,不会自动执行安装nodejs当前会先用 GitHub Releases 识别版本,再优先回退到nodejs.org/dist下载官方 MSI
安装依赖:
pip install -r requirements.txt更新所有已启用应用:
python auto_update.py只更新指定应用:
python auto_update.py nodejs只更新某个 Python Standalone 版本:
python auto_update.py python_standalone_3_10
python auto_update.py python_standalone_3_12强制按 Windows 配置处理:
python auto_update.py --platform windows忽略证书校验:
python auto_update.py --insecure- 运行日志会写入
update_log.txt - 每个应用抓到的发布页 HTML 会保存为
github_page_<app_id>.html - 如果下载失败,优先检查:
releases_url是否可访问- 是否已自动回退到 GitHub 官方页或 GitHub API
- 页面版本和 API 版本是否一致,必要时看
releases/tag/<tag>是否正确 installer_markers是否还能匹配当前发布页download_names是否和真实文件名一致- 如果是
nodejs这类特殊条目,检查download_url_templates指向的官方分发地址是否仍有效 - 证书或镜像站是否异常