From b64de0f2a42adb5ce28639acd0ba71bc30529af6 Mon Sep 17 00:00:00 2001 From: 90CN <90cn@local> Date: Thu, 5 Nov 2026 23:33:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8=E5=99=A8?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=97=B6=20=5FMEI=20=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E6=B8=85=E7=90=86=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- launcher/server.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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,