Build resolved at install
Zero Houron your machine
A cross-platform build of the Command & Conquer: Generals Zero Hour engine, for macOS, Linux and Windows. It is the engine only: it reads the game files from your own copy of Zero Hour.
For 64-bit Windows (x86-64). For Macs with Apple silicon. For x86-64 Linux with a Vulkan driver. Needs your own copy of Zero Hour.
Not your system? All four are listed below.
Get it
Every platform is listed here. The one you are reading on is lit. Nothing is hidden behind a menu, so if detection gets it wrong, your download is still on this page.
Nothing here is signed by Apple or Microsoft: a certificate costs money this project does not take. Your system will stop each of these once, and allowing the first launch is the one-time step.
Free and open source. No account, nothing sold, no EA game data included.
Everything published
The rows above are the route most people should take. These are the other artifacts in the signed manifest, offered directly for anyone the launcher fails, or who would rather place the files themselves.
GeneralsX engine for macOS
88 MB, build 0c66cd7bd, uploaded 2026-10-06 10:31 UTC
GeneralsX Launcher for Linux
77 MB, build 0c66cd7bd, uploaded 2026-10-06 10:30 UTC
Both are covered by the instructions below: the macOS engine under Install by hand instead, the Linux launcher under The launcher for Linux.
What you need first
Your own copy of Zero Hour. GeneralsX is an engine: it replaces the game’s executable, not the game. It ships no EA game data and does not modify your existing installation; it installs beside it.
INIZH.big.Install it
Three steps, about five minutes, most of it the download. Each one ends with something you can check.
Windows
The installer finds your Zero Hour for you. There is nothing to copy and nothing to configure, and it never writes to the installation you already have.
Verify this file
This executable is not code-signed. Windows will warn you, and you have no reason to take my word for any of this. Check the file yourself before you run it.
- SHA-256
-
c74404b3ac393dc0c06b781b11e81363c9867e60294ec9af5a6635d56036af38 - cmd
-
certutil -hashfile GeneralsX-Setup-c74404b3.exe SHA256 - PowerShell
-
Get-FileHash .\GeneralsX-Setup-c74404b3.exe -Algorithm SHA256 - Uploaded
- 19 August 2026, 15:22 UTC
Those 64 characters are the hash the installer itself enforces. If what you compute does not match what is printed here, do not run it.
What the installer does
- Size
- 2 MB, not 65 MB
- First run
- Downloads the build from this site, with progress and transfer rate
- Installs to
- Your own user folder, with no administrator prompt
- Detects
- An existing Zero Hour installation, automatically
- Updates
- Through the signed manifest, verified before anything is written
- On failure
- Refuses, and leaves your existing installation untouched
Get the installer
GeneralsX-Setup.exe is 2 MB and always installs the current build, so
the link above does not go stale.
Check You have GeneralsX-Setup.exe in
your Downloads folder.
Run it
There is no administrator prompt. It installs into your own user folder and finds Zero Hour by itself, including Steam libraries on other drives. It reads that folder and never writes to it.
Windows will say the publisher is unknown, because the installer is not code signed; a certificate costs money this project does not take. Choose More info, then Run anyway. If you would rather not, that is a reasonable position and you should not run it.
Check GeneralsX is in your Start menu, and you were never asked where Zero Hour lives. If it cannot find your copy it says so plainly rather than guessing.
Open GeneralsX
The launcher fetches the engine the first time, then Play starts the game. To play online, sign in with Discord from inside the game.
Check The game opens on its main menu. Later launches skip the download and start straight away.
Updating
Windows updates itself through the installer’s updater. Every update comes through the signed manifest and is verified before anything is written; if that check fails the update is refused and your existing installation is left as it was.
macOS
The launcher finds your Zero Hour for you and fetches the engine itself. There is nothing to unzip and nothing to place by hand, and none of the data-placement work under Install by hand instead applies to you.
Apple silicon only. This is the launcher, not the engine. It is 8 MB because it carries neither the engine nor the community patch archives every peer needs. Open it and press Install GeneralsX and it fetches the engine itself, with progress and a checksum check. When a newer engine is published the same button offers it, and nothing is ever installed without you pressing it. It also holds the settings the game buries: graphics, HUD, key bindings, a network test and diagnostics.
This app is not signed or notarised, so macOS will refuse it the first time you open it. That is expected, not a sign anything is wrong. See allowing the first launch for the one-time step that lets it open. Check the hash below first if you want to know you have the file I built.
Verify this file
- SHA-256
-
bdf6991112a3c31555b7cdd78600096a6d23afbd2e20ce3596b9237518bf6244 - Check it
-
shasum -a 256 GeneralsXLauncher-macos-0c66cd7bd.tar.gz - Uploaded
- 26 August 2026, 04:20 UTC
Get the launcher
GeneralsXLauncher-macos-0c66cd7bd.tar.gz is 8.4 MB. Double-click it in
your Downloads folder and macOS unpacks it into
GeneralsX Launcher.app.
Check You have GeneralsX Launcher.app in your Downloads folder.
Drag it to Applications
Drag GeneralsX Launcher.app onto your Applications folder, the same way you would install anything else.
Check You have
Applications › GeneralsX Launcher.
Open it and press Install GeneralsX
macOS will refuse to open it the first time. That is expected, and allowing the first launch is the one-time fix. Once it opens, press Install GeneralsX. The launcher downloads the engine itself, with progress and a checksum check, then Set up & Play starts the game.
Check The game opens on its main menu. Later launches skip the download and start straight away.
Install by hand instead
Most people should use the launcher above. This is the same engine it fetches for you, offered directly for anyone the launcher fails, or who would rather place the files themselves.
GeneralsX for macOS
88 MB, build 0c66cd7bd, uploaded 2026-10-06 10:31 UTC
Verify this file
- SHA-256
-
1b27da25b27a8e3814803db84d74de2b1bf0393c50da0b2422beed5815c3b7c0 - Check it
-
shasum -a 256 GeneralsXZH-macos-arm64-0c66cd7bd.zip
Apple silicon only. The zip carries the engine and everything it links against, including MoltenVK and DXVK, so nothing else needs installing. It also carries the community patch archives every peer must have, which is why it is larger than earlier builds: without them a Mac could not join a game. It carries no EA game data.
This app is not signed or notarised, so macOS will refuse it on first launch and say it is damaged. It is not damaged; that is what Gatekeeper says about everything without a paid developer certificate. Check the hash above first, then remove the quarantine attribute and open it. If you would rather not, that is a reasonable position and you should not run it.
- Unquarantine
-
xattr -dr com.apple.quarantine GeneralsXZH.app
Install by hand
Five steps, about fifteen minutes, most of it waiting for a download. Each one ends with something you can check, so you find out immediately rather than at the end.
Open the download and put the app in Applications
Double-click the zip in your Downloads folder. macOS unpacks it into a folder of the
same name. Inside is GeneralsXZH: drag that to your Applications folder,
the same way you would install anything else.
run.sh, ignore it and
delete it if you like. It is a leftover for people launching from a terminal, it is
not the game, and opening it just shows you a page of text. Downloads made after
26 August do not contain it.Check You have
Applications › GeneralsXZH. Do not open it yet, macOS will refuse
the first time. Step 4 deals with that.
Obtain your Zero Hour installation
You need the game’s data files. Which route you take depends on whether you have a Windows machine to copy from.
If you have a Windows PC. Zero Hour is a Windows title, so the Mac
Steam client will never offer it. On the PC, the folder is
steamapps\common\Command & Conquer Generals - Zero Hour. Copy the
whole thing to the Mac over the network or on a USB drive. Retail and Origin installs
work too: any complete Zero Hour folder.
If you have no Windows PC. SteamCMD will fetch a Windows depot onto
macOS if you tell it to. Install it with brew install --cask steamcmd,
then run the command below and enter your Steam password when asked. You must already
own the game. This signs in as you and downloads nothing you do not hold a licence
to.
- SteamCMD
-
steamcmd +@sSteamCmdForcePlatformType windows +login YOUR_ACCOUNT +app_update 2732960 validate +quit
Check You have a folder containing
Command and Conquer Generals Zero Hour.exe and a pile of
.big files. If there are no .big files you have the wrong
folder: you want Zero Hour, not the original Generals.
Put the data where the engine looks
The engine reads its data from exactly one folder. Copy the contents of your
Zero Hour folder into it (the .big files, the Data
directory, and the ZH_Generals folder) but not the Zero Hour folder
itself.
ZH_Generals, it
is not optional. Most of the world art lives in it, and the game starts
perfectly well without it, so it is the one thing here you can get wrong and not find
out for an hour. Steam and EA App installs have it. Retail and Origin installs do not:
they keep the original Generals in its own folder beside Zero Hour, and there is a
separate step for those further down.ZH_Generals as a folder. It holds
the original Generals, and it belongs inside your data folder still named
ZH_Generals. Do not copy what is inside it out into the top level. If you
do, the engine finds the original game where it expects the expansion and you get
Generals instead of Zero Hour. See the check below.- Data folder
-
~/GeneralsX/GeneralsZH
If you used SteamCMD, the download landed inside SteamCMD’s own
steamapps/common directory. Move that folder’s contents here.
ZH_Generals is the folder people skip, and it is where the music
and most of the world art live. Steam ships the entire original Generals
inside your Zero Hour install under that name. The Music.big in there is
about 159 MB against the 787 KB stub in the Zero Hour root, and
Textures.big, W3D.big and Terrain.big come with
it. Copy it across with everything else and the engine finds it by itself. Leave it
behind and you get silence, and terrain that renders bright magenta.
Check ls ~/GeneralsX/GeneralsZH/*.big lists around
two dozen files. If it prints No such file or directory, the contents
went one level too deep. Look for a nested folder and move what is inside it up.
ls -l ~/GeneralsX/GeneralsZH/ZH_Generals/{Music,Textures,W3D,Terrain}.big
must print four files, the largest of them hundreds of megabytes. This is the check
worth doing carefully, because nothing later on will fail loudly if you skip
it. The game starts, the menus work, and you can host and join other people
exactly as normal, and then the terrain renders bright magenta, trees and buildings
are missing their models, and there is no music. If those four files are not there,
go back and copy ZH_Generals across before you play. If your install
never had a ZH_Generals at all, use the Retail and Origin route below
instead.
ls ~/GeneralsX/GeneralsZH/INIZH.big must exist. That file is what makes
it Zero Hour. If you have INI.big but no INIZH.big, you
have copied the original Generals into the data folder by mistake. The game will
start, but you will get the Generals menu instead of Zero Hour. Empty the
folder and copy the Zero Hour one again, keeping ZH_Generals nested
inside it.
If you still have no music. Zero Hour ships seven tracks; its music list asks for fifty-seven. The other fifty live in the original Generals, and Zero Hour carries only a stub in their place.
If your copy came from Steam you already own those tracks and already
downloaded them. They are in ZH_Generals inside the Zero Hour
folder. There is no second download to run: the only thing that loses the soundtrack
is not copying that folder across.
Retail and Origin installs are laid out differently: they keep the original Generals as its own folder beside Zero Hour rather than inside it. If that is you, put its files here instead:
- Generals data
-
~/GeneralsX/Generals
Music.big from Generals, not the whole
install. The engine mounts any archive it finds in that folder. Copy it, do not move
it, and leave Zero Hour’s own Music.big where it
is: the two share a name but are different files, and Zero Hour’s is a
stub that belongs to Zero Hour.Check The Music.big you end up using
should be tens of megabytes. If it is about 787 KB you have picked up Zero
Hour’s stub again, and it contains no audio.
If you do not own the original game at all, everything else works. You play with seven tracks instead of fifty-seven.
Tell macOS the app is not damaged
Unzip the build anywhere you like. macOS will refuse it on first launch and say it is damaged. It is not: that is what Gatekeeper says about everything without a paid Apple developer certificate, and I do not have one.
Right-click GeneralsXZH.app, choose Open, then Open again
in the dialog. That is the whole step, and it is the only time you need to do it.
Verify the checksum published above first if you want to know you have the file I
built.
If right-click → Open does not offer the second button (some macOS versions hide it for quarantined apps), clear the flag from a terminal instead:
- Unquarantine
-
xattr -dr com.apple.quarantine GeneralsXZH.app
If you would rather not run an unsigned binary, that is a reasonable position and you should not run it.
Check The app opens instead of bouncing. If you
used the command, it prints nothing. Silence is success: xattr only
speaks up when it fails.
Run it
In the folder you unzipped there is GeneralsXZH.app. Right-click
it, choose Open, then Open again on the warning. No terminal. After the first
time you can double-click it like any other app.
Ignore run.sh. It sits beside the app and does the same
job, but macOS opens .sh files in whichever editor claimed the extension,
so double-clicking it launches a text editor rather than the game. The app is the one
you want.
To play with other people, choose Online from the main menu. You do not type a server address; the game finds the relay itself.
Check You reach the main menu with music playing. Everyone in a match needs the same build, so if a friend cannot join you, compare the version in the corner first.
Updating a hand install
If you installed by hand, you update by hand. The launcher does not manage a copy it did not install. It takes about thirty seconds, and you do not touch your game data.
- Quit the game if it is running.
- Download the zip above again. The filename carries the build, so a new name means a new build.
- Unzip it and drag
GeneralsXZH.appover your old one, replacing it. - Right-click → Open once more. macOS quarantines every fresh download, including updates.
~/GeneralsX/GeneralsZH is untouched by any of this. Your game data, maps and
settings stay where they are. Only the engine is replaced.
Why this matters. Everyone in a match must run the same build. Mismatched engines refuse each other rather than desync halfway through a game, so if a friend cannot join you, the first thing to compare is the version in the corner of the main menu.
Linux
x86-64 only. The tarball carries the engine, the libraries it links against including DXVK and SDL3, and the community-patch archives every player has to be running to join anyone. Extract it beside your Zero Hour folder and start it with ./GeneralsXZH-linux/run.sh.
Verify this file
- SHA-256
-
524f3ab5d1a7ada41e85322810ba49d8b12ac4237a77478653320dc7cfe82125 - Check it
-
sha256sum GeneralsXZH-linux-x86_64-0c66cd7bd.tar.gz - Uploaded
- 19 September 2026, 14:43 UTC
Three steps. There is no installer and nothing is written outside the folder you extract into.
Obtain your Zero Hour installation
Zero Hour is a Windows title, so Steam on Linux will not offer it directly. Copy the
folder from a Windows PC, where it lives at
steamapps\common\Command & Conquer Generals - Zero Hour.
Retail and Origin installs work too: any complete Zero Hour folder. If you have no
Windows machine, steamcmd can download it with
+@sSteamCmdForcePlatformType windows.
Put the data where the engine looks
Rename the copied folder to GeneralsZH and extract the tarball
beside it, so the two sit side by side: ~/GeneralsX/GeneralsZH/ and
~/GeneralsX/GeneralsXZH-linux/.
tar -xzf GeneralsXZH-linux-x86_64-*.tar.gz
The wrapper finds the data by name rather than by whichever directory you happen to be in when you start it. That matters more than it sounds: part of the identity every peer compares you on is resolved relative to where the game starts, so a copy started from the wrong place is refused by everyone with a message about data, not about paths.
Copy the whole Zero Hour folder, not a selection from inside it. Steam
and EA App installs keep the entire original Generals in a subfolder called
ZH_Generals, and most of the world art and all but seven music tracks are in
there rather than in the Zero Hour archives beside it. It has to stay a folder of that
name inside GeneralsZH. Retail and Origin installs instead keep the original
Generals in its own folder next to Zero Hour; if that is what you have, put it at
~/GeneralsX/Generals and the engine finds it there.
Check ls ~/GeneralsX/GeneralsZH/INIZH.big must exist.
That file is what makes it Zero Hour. If you have INI.big but no
INIZH.big you have copied the original Generals by mistake. The game starts,
but you get the Generals menu instead.
ls -l ~/GeneralsX/GeneralsZH/ZH_Generals/{Music,Textures,W3D,Terrain}.big
should print four files, the largest of them hundreds of megabytes. Do this one
carefully, because nothing later will fail loudly if you skip it. The
game starts, the menus work, and you can host and join other people exactly as normal,
and then the terrain renders bright magenta, trees and buildings are missing their
models, and there is no music. If your install genuinely has no
ZH_Generals, use the ~/GeneralsX/Generals route above instead.
The engine prints where it looked on stderr as it starts, tagged
[ASSET_ROOT]. If it says it found no base Generals assets, it is telling you
this check would have failed.
Run it
./GeneralsXZH-linux/run.sh
Add -win for a window instead of full screen. The tarball carries the engine,
everything it links against including DXVK and SDL3, and the community-patch archives
every player has to be running to join anyone, so there is nothing else to install. You
need a Vulkan-capable driver; Mesa on any current distribution is fine.
If it cannot find your game data it says so on stderr and names the two places it looked, rather than starting and failing later.
The launcher for Linux
GeneralsX Launcher for Linux
77 MB, build 0c66cd7bd, uploaded 2026-10-06 10:30 UTC
Verify this file
- SHA-256
-
2228651b22299813209f84ec1b2495463ccdc01a49b62b6bf690c55fd6002259 - Check it
-
sha256sum GeneralsXLauncher-linux-x86_64-0c66cd7bd.AppImage
Built on Ubuntu 24.04, so it inherits that system’s glibc 2.39 and will not start on anything older. Ubuntu 22.04 and Debian 12 are too old and fail on the C library, not on anything you can configure. Ubuntu 24.04, Debian 13 and Fedora 40 or newer are fine.
The route below is the one this build was actually exercised on. Running an AppImage directly needs libfuse2, which recent distributions no longer install by default, and the error it gives when that is missing names a library rather than the cause.
- Make it runnable
-
chmod +x GeneralsXLauncher-linux-x86_64-0c66cd7bd.AppImage - Run it
-
./GeneralsXLauncher-linux-x86_64-0c66cd7bd.AppImage --appimage-extract-and-run
Updating
There is no updater on Linux, and the launcher will not fetch the engine for you, so you
replace the tarball by hand. Quit the game, download the tarball again (the filename
carries the build, so a new name means a new build), and extract it as in step 2,
replacing the old GeneralsXZH-linux folder.
~/GeneralsX/GeneralsZH is untouched by any of this. Your game data, maps and
settings stay where they are; only the engine is replaced.
iPadOS
There is no iPadOS build to download yet.
iPadOS is a target and the port is being worked towards it, but nothing has been published, so there is nothing here to install. The macOS file will not run on an iPad. It is an Apple silicon Mac application, and iPadOS will not open it.
If you are reading this on an iPad, this section was selected because your device was recognised, not because something is available.
When it goes wrong
Five symptoms cover almost everything people report.
~/GeneralsX/GeneralsZH looks like. Check the path in the place step.~/GeneralsX/Generals if you own it. Do not reinstall; it will not help.RelayRoom line in
your Options.ini.The launcher
Optional. Nothing in this section is needed to play.
A separate application that sits beside an installation you already have. It shows the install it found and what changed in the current build, and it holds the settings the game buries: graphics, HUD, key bindings, a network test and diagnostics. It starts the game when you are done.
What it changes, it changes for real. Key bindings, graphics, HUD, the install it discovers and the archives it lists are your own files, not a copy the engine will ignore.
It is not a game installer and it carries no game data. On Linux you still need the build above; the launcher will not fetch it for you. macOS is different: the launcher above already fetches the engine.
- Shows
- The installation it found, and what changed in the current build
- Settings
- Graphics, HUD, and key bindings
- Network
- A connection test, and diagnostics to attach to a bug report
- Starts
- The game
- Does not
- Install the game, or carry any game data
- Windows
- Windows has its own launcher already: setup installs it, and your Start-menu shortcut opens it. This cross-platform one is a separate, newer app that has not been published for Windows yet; nothing is missing there.
- macOS
- This is the launcher in the list above. It is not a second download, and there is nothing extra to get here.
Licence and warranty
GeneralsX is free software supplied with no warranty of any kind, express or implied, as set out in sections 15 and 16 of the GNU GPL v3. The binaries are unsigned. Verify the published checksum before you run one, and understand that the entire risk as to quality and performance is yours.
The engine is GPL v3, built on EA’s source release and the community forks credited on the overview. The launcher is free to use but closed source. No EA game data is included or distributed here.
The corresponding source for these builds is not currently published. See Licences & source, which says so plainly and tells you how to request it.