Skip to content

Latest commit

 

History

History
255 lines (174 loc) · 7.15 KB

File metadata and controls

255 lines (174 loc) · 7.15 KB

GithubWinDownTools

这是一个基于 GitHub Releases 的按需下载 / 更新脚本仓库。

核心文件:

  • auto_update.py:按 apps.json 配置抓取版本、下载安装包、按需启动安装程序
  • apps.json:应用配置清单,已按 windows / darwin / linux 分平台维护
  • run_update.bat:Windows 下的一键运行入口

1. 先装环境

要求:

  • Python 3.6+
  • 能访问 GitHub 或配置里使用的镜像站

安装依赖:

pip install -r requirements.txt

2. 最快使用方式

方式一:Windows 直接双击

直接运行:

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> 提取,避免被页面标题或 latest API 误判

3. 如何启用某个应用

打开 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

4. 只更新指定应用

只处理某几个已经启用的应用:

python auto_update.py obsidian vscodium nodejs

如果应用没有启用,脚本会提示该 id 不存在或未启用。

5. 指定平台读取

即使你当前不是该系统,也可以强制读取某个平台块:

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

6. HTTPS 证书问题

如果镜像站证书异常,可以临时关闭证书校验:

python auto_update.py --insecure

或者在 apps.json 根级配置里设置:

"ssl_verify": false

注意:关闭证书校验有安全风险,证书恢复正常后建议改回 true

7. 发布页镜像与自适应回退

现在脚本对发布页抓取增加了自适应策略:

  • 先访问应用条目里的 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://你的自建镜像域名"
]

脚本会按顺序尝试这些发布页来源。

8. 下载目录

默认下载到仓库当前目录,由 apps.json 中的:

"download_dir": "."

控制。

你可以改成绝对路径或相对路径,例如:

"download_dir": "downloads"

9. apps.json 常用字段

每条应用至少需要:

  • id
  • releases_url
  • repo_path

常见可选字段:

  • enabled:是否参与批量处理
  • installer_markers:在发布页里识别安装包链接的关键字
  • download_names:兜底拼接下载地址时使用的文件名模板
  • download_url_templates:自定义备用下载地址模板,支持 {ver}{ver_plain}
  • save_name:本地保存文件名模板
  • windows_installer:Windows 安装包模式
  • installer_extensions:如 .exe.msi
  • process_name:安装前要结束的进程名
  • kill_before_install:安装前是否先结束进程
  • run_installer:是否下载完成后自动启动安装程序
  • url_hint:页面兜底搜索时使用的关键字
  • href_exclude_substrings:排除不需要的链接
  • installer_markers_match_all:要求多个关键字同时命中,适合多版本资产筛选
  • prefer_api_assets:优先从 GitHub API 资产列表中选包,适合超多附件的仓库
  • release_page_mirrors:根级可选,附加发布页镜像列表

10. 当前需要注意

目前仓库里的应用条目已经扩充到 500+,但分两类:

  • 一类是像 obsidianvscodiumnodejs 这样带完整下载规则的条目,可以直接用于自动下载
  • 另一类是新补充的目录型条目,先用于扩展覆盖面,只有基础字段,后续如果要稳定自动下载,还需要继续补 installer_markersdownload_namessave_name 等规则

这意味着:

  • 想立即使用,优先启用已经带完整规则的应用
  • 想让某个新条目真正可自动下载,需要继续补齐该应用的安装包匹配规则
  • python_standalone_* 属于可直接下载的预编译运行时条目,但下载结果是压缩包,不会自动执行安装
  • nodejs 当前会先用 GitHub Releases 识别版本,再优先回退到 nodejs.org/dist 下载官方 MSI

11. 常见命令

安装依赖:

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

12. 日志与排错

  • 运行日志会写入 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 指向的官方分发地址是否仍有效
    • 证书或镜像站是否异常