更新日志
2026-09-05 · 发芽启动器 v1.1.4 — 下载/搜索/整合包/联机/更新 全面修复与打包
改动文件:main.py、gen_wxs3.py、build_msi_102.py;版本号 1.1.3 → 1.1.4
一、资源下载 / 搜索
- 国内镜像优先:Modrinth API 与文件 CDN 走 MCIM 镜像,多镜像按本机实测延迟/失败率自动排序、失败回退官方;forge/neoforge 加载器安装器加 BMCLAPI
/maven镜像。 - 自适应并发
_AdaptiveGate(4~48,AIMD:全成功 +4、失败率 ≥25% 减半、≥10% -2),整合包文件镜像优先。 - 缓存写盘节流(
threading.Timer,最小间隔 2s)修 GIL 饿死导致的界面冻结;缓存条目兼容 dict/tuple 双形态,修curseforge_files的KeyError: 0崩溃。 - 中英同搜
CN_FEATURE_MAP(~85 词条)合并结果、保持相关性排序、图标重绘防抖、结果上限 80。 - 版本列表加载全链路不再抛异常拖垮资源详情页。
二、整合包 / 前置模组
fileSize字段修正(旧读size恒 0 → 显示 0MB、多一次探测);整合包强制 Modrinth 源;sha1 + zip 校验;失败日志落盘。- 加载器识别
_mrpack_loader_from_deps:fabric 用fabric-loader、quilt 用quilt_loader(旧只找fabric/quilt→ fabric 整合包被当无加载器、继承原版 → 一个模组都不加载)。_mrpack_loader_version_id探测真实安装目录名让inheritsFrom指对。修复 Better Minecraft 等 fabric 包零模组加载。 - 前置识别/下载全部改走镜像:修
api.modrinth.com被墙时「自动补装前置」整体静默失效(_mr_fetch_api/ 新增_mr_download_dep)。 - 新增源站无关前置解析:读 jar 内嵌
fabric.mod.json/mods.toml(_mod_jar_meta),CurseForge-only 模组的强制前置也能识别并按 Modrinth 精确 slug 补装,查不到的显式列出。
三、红石联机 / 急速启动 / 皮肤
- 红石联机不再写死 25565:
_rs_open探测本机真实 MC 端口(_srv_scan_ports+_mc_ping),探测不到弹框手填;内核要求端口确有 Java 服务端监听,poll 现能报「隧道被拒」。 - 急速启动:natives 首次解压持久化
.natives.ok标记,跳过每次启动的重复解压扫描。 - 皮肤同步:
_skins_sync_to_game里 CSL 自动安装移入独立 try,落位成功即返回 True(不再被 CSL 异常误判失败)。
四、自动更新(重写)
- 修根因:
_fetch_update_info首行_http_get_json对 HTML 页抛JSONDecodeError未捕获 → 启动检查静默失败、弹窗永不出现。现三级容错(自托管 JSON → BBSMC 接口 → HTML 兜底)。 - 检测改走 BBSMC Modrinth 兼容接口
api.<host>/v2/project/<slug>/version(无盾,取最新版号+zip直链+sha1+changelog),比抓 HTML 稳。 - 更新器
_apply_update_mode兼容两种包:BBSMC 免安装(顶层FayaLauncher/、无 manifest)与 build_update(扁平 + manifest 白名单);_find_update_root定位根;旧 manifest 读取提前到覆盖前修清理逻辑;排除 versions/config/auth 等玩家数据绝不删。 - 下载后校验
is_zipfile+ sha1/sha256;BBSMC cdn 直链带 JS 防下载盾(纯 HTTP 只拿到 55 字节验证页)→ 优雅降级为引导浏览器下载 + 提示update_source.txt;源码运行态不自更新。
五、Bug 检索(pyflakes 全量 + 人工复查)
- 修 3 处
self.after(0, lambda: ... str(e) ...):except 的e在块结束被删、延迟回调触发NameError(红石安装 / 更新 / 检查更新);改默认参快照lambda _e=str(e)。 - 修服务端模组同步「版本不一致跳过」引用未定义
loader_key→ 改从.faya_meta读 loader。 - 更新下载去掉
known_size(避免 175MB 触发 Range 多线程、撞盾直接失败而绕过盾检测)。
六、验证
- 语法编译通过;pyflakes 无 undefined-name / referenced-before-assignment。
- 冒烟
test_smoke.py:143 通过 / 0 失败(此前基线 142/1,皮肤同步项已修复)。 - 自动更新自测(临时脚本,已删):真实 BBSMC 解析 → latest=1.1.3 + url + sha1 + changelog;免安装包覆盖 exe / 新增 _internal / 保留玩家存档 / 包内 versions 不落地 / 临时目录清理;manifest 包按白名单清理旧产品文件。全过。
- 打包:
build_msi_102产出dist\发芽启动器-1.1.4.msi(≈147.7MB)+发芽启动器-1.1.4-win64.zip(≈166.99MB,1239 文件,顶层FayaLauncher/,与更新器免安装包识别一致)。
七、备注
- 需重启启动器生效。
- 现本地已 1.1.4、BBSMC 上最新仍为 1.1.3,故 1.1.4 用户暂不弹更新;把 1.1.4 发布到 BBSMC 后,1.1.3 老用户即可被检测到并提示更新。



