Skip to content

v1.0.3 —— 长路径 Mod 能导入了(#12)· 下载「每块必超时」的真凶 · 新增「贴图替换类」

Choose a tag to compare

@jing-hy jing-hy released this 03 Oct 13:42
· 280 commits to main since this release

v1.0.3 —— 长路径 Mod 能导入了(#12)· 下载「每块必超时」的真凶 · 新增「贴图替换类」

本版修复的反馈:#12 · mod问题
(「mod无法解压」—— 根因是 Windows 的 260 字符路径上限,本版已支持长路径)


最重要的一条:下载「每一块都超时」

如果你遇到过下载到最后失败、日志里一堆
分块 xxx 第 1 次失败:The read operation timed out —— 那是我上一版引入的 bug:

为了做「暂停秒级生效」,我把 socket 超时设成了 1 秒(轮询粒度),
却没注意 response.read() 用的就是这个超时 —— 慢线路上读满 256 KB 要几十秒
⇒ 每一次读取都必然超时 ⇒ 4 次重试全废 ⇒ 整包下载失败。
(实测现场:912 MB 的包,第一块 0–7.1 MB 就失败,3 分 50 秒后放弃。)

现在:探测用 1 秒(select() 只是"看一眼",这个粒度正确),
真读之前把预算放回该块的窗口,读完再收回。慢线路不会被误杀,
「暂停」也依然是秒级。

长路径 Mod 能导入了(#12)

反馈里那条路径 264 字符,超过 Windows 上限 259:

  56  …\library
 124  + 庄方宜纹身肥美版(切换键 X ,ctrl+, 。?】 ;ctrl+5 方向键上下 8)fantasy_in_the_miragef_2\
 190  + 庄方宜纹身肥美版(…)fantasy_in_the_miragef\
 239  + NoM_ZhuangFangyi_Fantasy in the MirageF(MAX)V1.2\
 264  + Meshes\Component0_IB.buf          ← 超了 5 个字符

父目录建得出来、最后那个文件写不进去 ⇒ 报的正是 [Errno 2] No such file or directory。

  • 能用长路径就用:解压时给路径加 Win32 扩展长度前缀 \\?\(进程内生效、不改系统设置),
    实测 316 字符的路径也能正常解开;
  • 用不上就明说:解压之前先扫一遍包内条目,预判会超长的当场拦住,
    并给出「哪个文件超了、超多少、三条对策」—— 而不是解到一半抛一句英文 errno。

辅助 Mod 新增「贴图替换类」分组

像「弭弗饮料罐」那种 —— 把饮料罐贴图换成真实品牌、有 Textures\ 但没有 Meshes\ 的,
以前会被当成"有换装资源"而落进「服装 Mod」页。现在它们归到辅助 Mod 下的
「贴图替换类」(与「加载页与壁纸」并列)。

判据 = 只看"改了什么":有贴图、没有网格 ⇒ 贴图替换;
一旦发现 Meshes\ 就说明在换模型,仍留在角色库参与同角色互斥。
名字里带服装类词的(泳装/旗袍/内衣/服装/皮肤…)一律排除 ——
它们虽然也可能只有贴图,但那是那个角色的衣服。

自更新:看得见进度、装之前会问你

点了左侧徽章的「下载并更新」之后:

  • 徽章上直接显示 下载中 45% · 1.2 MB/s + 底部一条细进度条(以前只有一句"正在处理…",28 MB 全程无反馈);
  • 下载完弹窗问「立即重启并安装 / 稍后」(以前下完就没了,既不提示也不安装);
  • 失败也弹窗说明原因。

关于「1.0.0 / 1.0.1 自更新有问题」

已在 alerts.json 里发了一条只给这两个版本看的公告(min_version=1.0.0 /
max_version=1.0.1,实测 1.0.2/1.1.0 看不到),说明请手动到 Releases 或 QQ 群
拿最新 exe 直接覆盖 —— 数据不会动,换完就有正常自更新了。

⚠️ 另外提醒:runtime\_update\ 里若躺着更早下载的更新包,点徽章会校验它是不是当前最新版
(size + sha256 都核),不匹配会拒绝并要求重新下载 —— 这是为了防止"装了还是旧版"的死循环。

其它

  • 顺手修:looks_like_texture_only 的判据收窄,不再误伤「莱万汀泳装」这类角色服装。
  • 测试从 546 增至 555。