Files
90CNServer/docs/README.md
T
hanfuit c6587d88ee 启动器:修复打包后自我套娃开窗,补运行日志与排查文档
根因:start_gmweb() 用 sys.executable 拉起 gmweb/serve.py,源码运行时是
python.exe,PyInstaller 单文件打包后却是启动器自身 —— 于是 `exe serve.py`
又开了一个启动器,新启动器再去拉 serve.py,每代顺延一个端口并各开一个
空窗口,直到 19546 端口用尽。开发机因为 18112 早被占用走了 early return,
所以看不出来。

- 新增多调用模式 run_script_instead():exe <xxx.py> [args] 时用 runpy 直接
  执行该脚本,不开窗口/不提权/不占互斥量,打包后拉起 serve.py 才合法
- 新增单实例互斥(Local\DNF90Launcher-5E9C1B7A):重复启动把已有窗口
  ShowWindow+SetForegroundWindow 后退出,不再开第二个窗口
- start_gmweb() 增加就绪校验:spawn 后最多等 6 秒确认 18112 在监听,未监听
  则改用 importlib 在本进程线程里跑 serve.py 的 main(),绝不再拉起新窗口
- self_elevate() 提权重启带上原始参数(原来 ShellExecuteW 传 None,参数全丢);
  DNF90_GMWEB_CHILD=1 的子进程不再触发 UAC
- WebView2 数据目录固定到 %LOCALAPPDATA%\DNF90Launcher\WebView2 且
  private_mode=False,避免 exe 在只读目录/网络盘时窗口空白且无报错;
  启动前查注册表确认运行时是否存在
- 新增 启动器日志.txt(exe 同目录,512KB 转 .old.txt):console=False 下
  print 与未捕获异常全部落盘,顶部记录 pid/argv/SERVER_ROOT
- 文档:新增 docs/启动器窗口风暴排查.md(现象、根因、复现手法、修复点、
  日志判读表),README 常见坑与文档索引、docs/README、launcher/README 同步
2026-11-05 17:22:51 +08:00

29 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 开发文档索引
本目录汇总各子项目的开发文档。
| 文档 | 内容 |
|------|------|
| [开发文档.md](开发文档.md) | **GM 启动器 / 整合工具** 完整开发文档(环境搭建、架构、API 契约、打包部署、常见问题) |
| [服务端开发文档.md](服务端开发文档.md) | **服务端(Go)** 架构、GM 接口契约、拍卖行/背包改动、编译部署 |
| [PVF解析开发文档.md](PVF解析开发文档.md) | **PVF 解析** 套件(pvfine)、pvfexport 工具、离线名称显示集成 |
| [客户端补丁与CRC校验.md](客户端补丁与CRC校验.md) | **客户端补丁(90CN.dll)** 自校验机制、`patch_dll_crc.py` 用法、与「服务端 DLL 指纹」的区别、排查手册 |
| [启动器窗口风暴排查.md](启动器窗口风暴排查.md) | **启动器重复开窗口 / 页面空白** 的根因(打包后 `sys.executable` 指向自身)、复现手法、修复点与日志判读 |
| [launcher-README.md](launcher-README.md) | 整合启动器 + GM 工具的原始 README |
其余子项目的 README 分散在各自目录:
- `server/README.md` — 服务端源码说明
- `pvf/README.md` — pvfine 项目说明
- `gmtool/README.md` — GM 工具旧版说明
---
## 快速上手路径
1. **只想跑起来**:看根目录 [README](../README.md) 的「快速开始」。
2. **改 GM 工具(启动器)**:看 [开发文档.md](开发文档.md)。
3. **改服务端 GM 接口**:看 [服务端开发文档.md](服务端开发文档.md) 的「GM 接口契约」。
4. **改 PVF 解析 / 物品名**:看 [PVF解析开发文档.md](PVF解析开发文档.md)。
5. **改客户端补丁 / 重编 DLL**:看 [客户端补丁与CRC校验.md](客户端补丁与CRC校验.md)——改完 DLL 要补 CRC,并且要重编服务端。