diff --git a/launcher/server.py b/launcher/server.py index c9d22e8..114c365 100644 --- a/launcher/server.py +++ b/launcher/server.py @@ -381,6 +381,19 @@ def start_gmweb(): _logf("gmweb:%d 已在监听,跳过启动" % GM_WEB_PORT) return + if getattr(sys, "frozen", False): + # A frozen onefile launcher must not spawn itself for gmweb: the + # child keeps the parent _MEI directory open after the window closes, + # which makes PyInstaller report "Failed to remove temporary directory". + _logf("gmweb: frozen mode uses in-process server") + start_gmweb_inproc(script) + for _ in range(30): + if port_open(GM_WEB_PORT): + _logf("gmweb: http://127.0.0.1:%d/ ready" % GM_WEB_PORT) + return + time.sleep(0.2) + return + try: kwargs = {"cwd": os.path.dirname(script), "stdout": subprocess.DEVNULL,