From b031d7e7d45d4d024daceb3b71b5b2885f11cc1b Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 21 Jun 2026 19:21:40 +0000 Subject: [PATCH] fix(wolf): use wineserver -f as anchor instead of cmd.exe timeout wine cmd.exe /c "timeout /t 900 > nul" failed silently (docker exec -d hides errors), leaving no anchor process and letting wineserver die as soon as EAappInstaller.exe exited. Replace with wineserver -f (foreground mode) which keeps the server alive unconditionally until explicitly killed with wineserver -k. This is the correct primitive for holding a Wine session open. Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_01D8ckUJQtj1pH8jtAddBDZs --- services/wolf.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/services/wolf.sh b/services/wolf.sh index 9ef055c..3218b0f 100644 --- a/services/wolf.sh +++ b/services/wolf.sh @@ -1958,17 +1958,17 @@ PYEOF "$_ia_wine" reg delete "$_ia_key" /v InstallSuccessful /f 2>/dev/null || true done sleep 1 - # Start a wineserver anchor so background processes spawned by the - # WiX bootstrapper (EAappInstaller.exe) survive after it exits. - # Without this, wineserver shuts down when the foreground wine process - # exits, killing the real installer before it can write any files. + # Start wineserver in foreground mode (-f) so it keeps running even after + # the WiX bootstrapper exits. Without this, wineserver shuts down when + # the foreground wine process exits and kills the real installer. + # wineserver -f stays alive until explicitly killed with wineserver -k. + _ia_wineserver="${_ia_wine%/wine}/wineserver" echo "Starting wineserver anchor (keeps Wine alive while installer runs)..." docker exec -d -u 1000 \ -e DISPLAY="$_ia_display" \ -e WINEPREFIX="$_ia_wineprefix" \ - -e WINE_LARGE_ADDRESS_AWARE=1 \ "$_ia_container" \ - "$_ia_wine" cmd.exe /c "timeout /t 900 > nul" + "$_ia_wineserver" -f sleep 3 # Launch the installer detached — it will spawn background processes @@ -2004,7 +2004,7 @@ PYEOF docker exec -u 1000 \ -e WINEPREFIX="$_ia_wineprefix" \ "$_ia_container" \ - "$_ia_wine" wineserver -k 2>/dev/null || true + "$_ia_wineserver" -k 2>/dev/null || true if [ "$_ia_found" = 1 ]; then echo "Applying EA fix (registering link2ea:// handler)..." _apply_ea_fix "$_ia_appid"