Files
90CNServer/.gitignore
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

61 lines
879 B
Plaintext

# ===== Python (launcher / gmtool) =====
__pycache__/
*.py[cod]
*.pyo
*.pyd
.venv/
venv/
env/
*.egg-info/
.pytest_cache/
# ===== Go (server / pvf) =====
*.exe
*.exe~
*.dll
*.so
*.dylib
*.test
*.out
/dist/
/bin/
vendor/
# ===== PyInstaller 打包产物 =====
launcher/build/
launcher/dist/
*.spec.bak
# ===== C# (loadout-tool) =====
loadout-tool/bin/
loadout-tool/obj/
loadout-tool/publish/
*.user
*.suo
# ===== C++ (client-patch) =====
client-patch/Release/
client-patch/Debug/
client-patch/x64/
client-patch/.vs/
*.vcxproj.user
# ===== 运行时数据 / 生成物 =====
# 物品名称表(由 pvfexport 从 Script.pvf 导出,不提交)
launcher/dnf_items.json
*.pvf
*.log
# ===== IDE / 编辑器 =====
.idea/
.vscode/
*.swp
*.swo
.DS_Store
Thumbs.db
# 启动器运行日志(exe 同目录)
launcher/启动器日志.txt
启动器日志.txt
启动器日志.old.txt