DevourUnlocker/scripts/launch.sh
MiTHRAL 77f86c00ac
Some checks are pending
Build DevourUnlocker / windows-cross (push) Waiting to run
Build DevourUnlocker / linux (push) Waiting to run
Build DevourUnlocker / standalone (push) Waiting to run
v2.0.3: fix winhttp proxy forwarding + MH already init + standalone auto-deploy
- winhttp_proxy: runtime forwarding via GetProcAddress to C:\Windows\System32\winhttp.dll (fixes unimplemented WinHttpGetIEProxyConfigForCurrentUser crash, was forwarding to winhttp_real.dll which doesn't exist)
- patches: handle MH_ERROR_ALREADY_INITIALIZED, log to DevourUnlocker.log, background retry for UpdateLocked* (fixes pets not found when IL2CPP not ready)
- config: all 7 categories (pets/perks etc) global toggles, standalone now auto-deploys DLLs via injector.ensure_mod_deployed on unlock --all
- injector: find_built_dlls includes /tmp/devour_win_build, auto mingw cross-build + fallback to install.sh fetch
- scripts/launch.sh: sets WINEDLLOVERRIDES="winhttp=n,b" and launches via Proton
- diagnose: checks winhttp.dll presence, DevourUnlocker.log, WINEDLLOVERRIDES hint
- Verified: winhttp.dll 1.5M exports WinHttpGetIEProxyConfigForCurrentUser correctly forwarded, no longer crashes, Present hooked, but UpdateLockedPets still not found — needs IL2CPP enumeration fix
2026-08-21 22:46:42 -04:00

58 lines
2.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# Launch Devour with DevourUnlocker via Proton (sets WINEDLLOVERRIDES so winhttp.dll is loaded)
# Usage: ./scripts/launch.sh or bash scripts/launch.sh --diagnose
set -euo pipefail
GAME_DIR="${GAME_DIR:-$HOME/.local/share/Steam/steamapps/common/Devour}"
PREFX="${WINEPREFIX:-$HOME/.local/share/Steam/steamapps/compatdata/1274570/pfx}"
PROTON="${PROTON:-$HOME/.local/share/Steam/compatibilitytools.d/GE-Proton10-34/proton}"
if [[ ! -f "$GAME_DIR/DEVOUR.exe" ]]; then
echo "[!] No DEVOUR.exe at $GAME_DIR — set GAME_DIR=/path"
exit 1
fi
if [[ ! -f "$GAME_DIR/winhttp.dll" ]]; then
echo "[!] winhttp.dll not found beside DEVOUR.exe — running injector --deploy-only..."
python3 "$(dirname "$0")/../standalone/injector.py" --deploy-only || true
fi
if [[ ! -f "$GAME_DIR/winhttp.dll" ]]; then
echo "[!] Still no winhttp.dll — build or run scripts/install.sh"
exit 1
fi
echo "[*] Game: $GAME_DIR"
echo "[*] Prefix: $PREFX"
echo "[*] Proton: $PROTON"
echo "[*] Launching with WINEDLLOVERRIDES=\"winhttp=n,b\" — check $GAME_DIR/DevourUnlocker.log after"
echo "[*] If Steam launch, instead set: Steam → Devour → Properties → Launch Options: WINEDLLOVERRIDES=\"winhttp=n,b\" %command%"
if [[ "${1:-}" == "--diagnose" ]]; then
python3 "$(dirname "$0")/../standalone/devour_unlocker.py" diagnose
exit 0
fi
export WINEPREFIX="$PREFX"
export STEAM_COMPAT_DATA_PATH="$HOME/.local/share/Steam/steamapps/compatdata/1274570"
export STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME/.local/share/Steam"
export SteamAppId=1274570
export WINEDLLOVERRIDES="winhttp=n,b"
export WINEDEBUG=-all
# Kill stale wineserver
wineserver -k 2>/dev/null || true
sleep 1
rm -f "$GAME_DIR/DevourUnlocker.log"
# Launch via proton (background, then wait 5s and show log)
timeout 30 "$PROTON" run "$GAME_DIR/DEVOUR.exe" &
PROTON_PID=$!
echo "[*] Proton pid $PROTON_PID — waiting 15s for DevourUnlocker.log..."
sleep 15
if [[ -f "$GAME_DIR/DevourUnlocker.log" ]]; then
echo "--- DevourUnlocker.log ---"
cat "$GAME_DIR/DevourUnlocker.log"
else
echo "[!] No DevourUnlocker.log — DLL not loaded. Check WINEDLLOVERRIDES and that libgcc etc are beside winhttp.dll"
ls -lh "$GAME_DIR"/*.dll 2>&1 | head -n 20
fi
echo "[*] Game should be running — press F6 for GUI, check in-game wardrobe. This script will exit but game keeps running."
wait $PROTON_PID 2>/dev/null || true