跳转至

ADR-0001:热修单位为整 exe 替换,不拆动态库、不做规则外置化

日期:2026-07-20 状态:已接受

背景

站点适配逻辑(Netflix / Amazon / Disney+ / Hulu)100% 硬编码 C++ 并静态链接进主程序,不存在服务端规则下发机制。PRD 设想的"站点适配规则更新"作为纯数据热修在现状下不成立。可选路径:(A) 只做配置开关 + yt-dlp(修不了 Tier 0 主力平台);(B) 拆 libstreameta 为动态库(代码结构不佳,重构工作量巨大);(C) 直接下发替换整个最终链接的主程序 exe。

决策

选 (C):热修单位 = 整 exe 文件替换。热修构建 = 从热修分支跑现有构建流水线(含 VMProtect + 平台代码签名)。通道架构统一为"签名文件集下发",主 exe、yt-dlp.exe、配置开关文件都是清单中的受管文件。

后果

  • 优点:零代码重构;覆盖全部 C++ 适配故障;回滚 = 保留旧 exe 换回,天然实现 latest+safe 双份机制;业界同构(Sparkle/Squirrel 也是整件替换)。
  • 代价:热修 exe 必须与已安装资源/依赖严格配套 → 按基线版本定向(见 ADR-0002);重启才生效(见 ADR-0005)。
  • 体积:主 exe 不做 bsdiff 差分,走全量 zip 投递——CI 侧 force_add_list.txt 已把 StreamFab64.exe 排除在差分之外(加壳签名二进制的 bspatch 会触发杀软/签名问题),热修沿用该结论。热修包体积 ≈ 主 exe 压缩后大小,第一版接受(见 ADR-0008)。