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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D8ckUJQtj1pH8jtAddBDZs
This commit is contained in:
Claude
2026-06-21 19:21:40 +00:00
parent 70a7b83cc4
commit b031d7e7d4
+7 -7
View File
@@ -1958,17 +1958,17 @@ PYEOF
"$_ia_wine" reg delete "$_ia_key" /v InstallSuccessful /f 2>/dev/null || true "$_ia_wine" reg delete "$_ia_key" /v InstallSuccessful /f 2>/dev/null || true
done done
sleep 1 sleep 1
# Start a wineserver anchor so background processes spawned by the # Start wineserver in foreground mode (-f) so it keeps running even after
# WiX bootstrapper (EAappInstaller.exe) survive after it exits. # the WiX bootstrapper exits. Without this, wineserver shuts down when
# Without this, wineserver shuts down when the foreground wine process # the foreground wine process exits and kills the real installer.
# exits, killing the real installer before it can write any files. # 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)..." echo "Starting wineserver anchor (keeps Wine alive while installer runs)..."
docker exec -d -u 1000 \ docker exec -d -u 1000 \
-e DISPLAY="$_ia_display" \ -e DISPLAY="$_ia_display" \
-e WINEPREFIX="$_ia_wineprefix" \ -e WINEPREFIX="$_ia_wineprefix" \
-e WINE_LARGE_ADDRESS_AWARE=1 \
"$_ia_container" \ "$_ia_container" \
"$_ia_wine" cmd.exe /c "timeout /t 900 > nul" "$_ia_wineserver" -f
sleep 3 sleep 3
# Launch the installer detached — it will spawn background processes # Launch the installer detached — it will spawn background processes
@@ -2004,7 +2004,7 @@ PYEOF
docker exec -u 1000 \ docker exec -u 1000 \
-e WINEPREFIX="$_ia_wineprefix" \ -e WINEPREFIX="$_ia_wineprefix" \
"$_ia_container" \ "$_ia_container" \
"$_ia_wine" wineserver -k 2>/dev/null || true "$_ia_wineserver" -k 2>/dev/null || true
if [ "$_ia_found" = 1 ]; then if [ "$_ia_found" = 1 ]; then
echo "Applying EA fix (registering link2ea:// handler)..." echo "Applying EA fix (registering link2ea:// handler)..."
_apply_ea_fix "$_ia_appid" _apply_ea_fix "$_ia_appid"