2.2 KiB
Installers
Current State
Installer behavior is split across game XML, gamemanager startup, addonsmanager, SteamCMD helpers, and agent scripts.
Important references:
Panel/modules/config_games/schema_server_config.xmlPanel/modules/gamemanager/home_handling_functions.phpPanel/modules/addonsmanager/module.phpPanel/modules/steam_workshop/module.phpAgent_Linux/ogp_agent.plAgent-Windows/OGP64/OGP/ogp_agent.pl
Installer Types Seen In The Codebase
- SteamCMD-based installs
- download/extract installs
- script-driven installs
- Workshop/content installs
- profile/content copy workflows
Recommended Model
Installer strategy should come from game capability metadata. The agent should execute trusted strategies, not arbitrary customer commands.
Windows Agent Install Notes
The Windows agent is Cygwin-based under Agent-Windows/OGP64.
Common installed layout:
- Cygwin root:
C:\OGP64 - Bash:
C:\OGP64\bin\bash.exe - Agent root:
C:\OGP64\OGP - Maintained launcher:
C:\OGP64\OGP\Install\agent_start.bat - Convenience launcher:
C:\OGP64\agent_start.bat
The launcher checks %~dp0bin\bash.exe, %~dp0..\bin\bash.exe, %~dp0..\..\bin\bash.exe, C:\OGP64\bin\bash.exe, C:\cygwin64\bin\bash.exe, and C:\cygwin\bin\bash.exe. Missing-bash errors should print every checked path and pause in manual use. Set GSP_AGENT_NO_PAUSE=1 for service/non-interactive wrappers that should fail fast instead of waiting at a prompt.
Generated config files under /OGP/Cfg are production state. Installer/startup may create them from .default templates if missing, but update logic must preserve them. Restart-time auto-update may replace only /OGP/ogp_agent.pl; it must not overwrite Cfg/Config.pm, Cfg/Preferences.pm, Cfg/bash_prefs.cfg, service settings, passwords, server data, or logs.
When the Windows agent starts, the batch wrapper now writes the startup log to C:\OGP64\var\log\gsp_agent_start.log when that Cygwin root is detected, and the Cygwin helper tees live output to /var/log/gsp_agent_start.log inside the shell environment. Manual failures print the last 100 lines of that log before the console pauses, so the original error remains visible in the same window.