diff --git a/AGENTS.md b/AGENTS.md index 7d2c5ca..0e94193 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -263,6 +263,11 @@ git push origin main # ③ 推 仓库改了,`Z:\90server` 和桌面补丁包**还是旧的**(见 R3)。凡是改了 `gmweb/`、启动器或客户端的提交, 推完要:同步部署副本 → `diff -rq` 核对 → 该重打包的重打包 → 通知实际在玩的人重启启动器。 +**改 `serve.py` 尤其要注意**:静态文件(`index.html` / `loadout.js` / `.css`)每次请求读盘、替换即生效, +但 `serve.py` 的路由是**进程启动时注册**的。抓 18112 的那个进程(进程名可能就叫 `DNF90启动器.exe`, +看命令行有没有 `serve.py --port 18112`)不重启,就会出现「页面是新版、接口是旧版」—— +按钮点着没反应,最难查。所以:同步完先看 18112 是谁在听,该关就关,再重新打开启动器。 + > 真实案例:`cc54603` 推了 gmweb 一键换装,但部署目录没同步,游戏里看不到新功能; > 同时 18112 被一个残留 `serve.py` 占着,启动器看到端口已占用就跳过启动, > 于是「改了、推了、也重启了,还是旧页面」(见 P-007、P-008)。 diff --git a/docs/启动器窗口风暴排查.md b/docs/启动器窗口风暴排查.md index 5279895..6e9ff31 100644 --- a/docs/启动器窗口风暴排查.md +++ b/docs/启动器窗口风暴排查.md @@ -121,6 +121,35 @@ DNF90启动器.exe probe.py # 旧版:hit.txt 不生成,却开出一个 | `警告:注册表里没查到 WebView2 运行时` | 机器缺 Edge WebView2 Runtime,装一下即可(窗口会是空白) | | 完全没有日志文件 | exe 所在目录不可写(如 Program Files),换目录或给写权限 | +### 18112 上跑的可能是「启动器」本身,别被进程名骗了 + +多调用模式的代价:gmweb 子进程的**进程名就是 `DNF90启动器.exe`**,真实身份只在命令行里。 + +``` +DNF90启动器.exe Z:\90server\gmweb\serve.py --port 18112 +``` + +实际踩过:看到 18112 被占、进程名是启动器,先判断成「启动器在跑」,又找不到窗口可点 +(父进程早退了、只剩这个子进程),于是改口成「残留的 `pythonw serve.py`」——两次都错了。 +**名字不可靠,看命令行**: + +```powershell +Get-CimInstance Win32_Process | Where-Object { $_.ProcessId -eq } | + Select-Object Name,ProcessId,ParentProcessId,CommandLine | Format-List +``` + +| 命令行特征 | 身份 | +|---|---| +| 带 `...\gmweb\serve.py --port 18112` | gmweb 服务进程(正常形态,父进程通常就是启动器) | +| 只有 exe 路径,且自己占着 `19527` | 启动器主进程 | +| 上面那条的 `ParentProcessId` 已不存在 | 父启动器退了,留下的是**遗留 gmweb 服务**(能继续用,但跑的是旧代码) | + +> **关键推论:它跑的是「启动那一刻」的 `serve.py`。** +> 静态文件(`index.html` / `loadout.js` / `.css`)每次请求都读盘,替换后立即生效; +> 但 `serve.py` 的路由是进程启动时注册的,**替换文件不会生效**。 +> 症状是「页面是新版(按钮都在),接口却是旧版(点了没反应 / 404)」。 +> 所以同步过 `gmweb/` 之后,必须让占着 18112 的进程重启一次(关启动器 → 确认端口空了 → 重新打开)。 + ## 七、相关坑(顺带记录) - **exe 名字带中文**没问题,日志和 WebView2 目录都能正常处理;但 exe 放在**只读目录**会让日志与 WebView2 同时失效,表现就是「能开窗口但空白、也没有日志」。