This is a based off of GenLauncher. Tested on Windows 10 and Ubuntu.
- The original is writen in
.NET Framework, which generally isn't suppport on Linux - I comtemplated migrated
.NET Framworkto.NET Core, but.NET Coreisn't support on BSD, which is a goal - A Systems language is a better language for this kind of tool, as the code base dropped from ~100k loc to ~20k loc.
- I have limited time to support this and LLMs can provide more trustworthy outputs for rust.
- Grab a binary from the releases
- Move the binary into the Generals folder
- run executable (Linux users may need to
chmod +xbinary)
You don't have to launch the vanilla game first, as
GenLauncher-Linuxwill create theoptions.inifile if it doesn't exist.
If you're having issues running the game, check protondb and configure the compatability mode of the game to use the newest version of proton. I used
experimentalon ubuntu26.
- lock file rather than a mutex, so it works the same on Windows/Linux.
.rarextraction uses 7-Zip,unrarorunarif one is installed (on PATH, or in 7-Zip's or WinRAR's default folder on Windows)..zipand.7zneed nothing.- Add mod from files understands downloaded archives. Pick the
.zip/.rar/.7zas downloaded (e.g. from ModDB): the name and version are suggested from the file name, wrapper folders are stepped through, a full-game repack is reduced to the files the mod actually changes, and you are asked afterwards whether to delete the archive. - No self-update
- No advertising card
- Modded executable.
Use modded exe files[default] now downloads the repository'sModdedExeand runs it. - With
Install and autoupdate Gentoolon [default], each game launch checks gentool.net and installs or updates GenTool'sd3d8.dllin the game folder. With it off,d3d8.dllis moved aside for the run.
-
Steam edition sometimes gets error "Failed to fetch Steam App Name!". Make sure
Use modded exe filesis on. -
With more than one monitor, the game can ignore the mouse. This is due to how Wine runs the virtual desktop
-
If the game is running, GenLauncher will refuse to close by design to prevent any race condition from the lock file.
bumping
versioninCargo.tomltriggers therelease.ymlCI
cargo run --releaseOn Windows,
build.rsgenerates the.exeicon fromassets/icon.pngand embeds it with the version fromCargo.toml.
cargo testOn Linux, one more drives a whole launch through a stand-in wine script: mod
linking into differently-cased folders, the environment Wine receives, waiting
for game.dat, and restoring the folder. It claims the process-wide game
folder, so run it on its own (CI does):
cargo test proton_launch_end_to_end -- --ignored| Action | What |
|---|---|
| Start-up | the repository index and the manifests/logos of mods you already have |
| Adding a mod | that mod's manifest and its patch/addon manifests |
| Installing | the mod's files, from its S3 bucket or its share link |
| Installing (S3 only) | one SNTP query to time.windows.com, to warn about a skewed clock |
| Launching with GenTool on | the gentool.net front page, and GenTool itself when it is missing or outdated |
| Launching Zero Hour with "Use modded exe files" on | the repository's modded executable, once |
| Launching with Vulkan on | the Vulkan layer, if the repository has a newer one |
