GeneralsX is an independent community build. EA has not endorsed and does not support this product. Command & Conquer, Generals and Zero Hour are trademarks of Electronic Arts Inc.

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.

See all downloads

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.

After the download. The steps for your system are under Install it, below. macOS and Windows stop an unsigned app the first time it opens; allowing the first launch is a one-time step.

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.

Windows Installer GeneralsX-Setup-c74404b3.exe 2 MB x86-64 unsigned Download for Windows

Next. Run GeneralsX-Setup-c74404b3.exe from your Downloads folder. Windows will say the publisher is unknown: choose More info, then Run anyway. The full steps are under Install it, below.

macOS Launcher GeneralsXLauncher-macos-0c66cd7bd.tar.gz 8.4 MB Apple silicon unsigned Download for macOS

Next. Double-click the download to unpack GeneralsX Launcher.app, then drag it to Applications. macOS will refuse to open it the first time; allowing the first launch is the one-time fix. The full steps are under Install it, below.

Linux Engine GeneralsXZH-linux-x86_64-0c66cd7bd.tar.gz 242 MB x86-64, Vulkan Download for Linux

Next. Extract the tarball beside your Zero Hour folder. The data check in step 2 is the one to do carefully, because nothing fails loudly if you skip it. The full steps are under Install it, below.

iPadOS No build published yet The macOS file will not run on an iPad unreleased Not released

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

Apple siliconunsigned

88 MB, build 0c66cd7bd, uploaded 2026-10-06 10:31 UTC

GeneralsXZH-macos-arm64-0c66cd7bd.zip

GeneralsX Launcher for Linux

x86-64glibc 2.39+

77 MB, build 0c66cd7bd, uploaded 2026-10-06 10:30 UTC

GeneralsXLauncher-linux-x86_64-0c66cd7bd.AppImage

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.

If you have Generals but not the Zero Hour expansion, that is not enough. The file to look for is 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

Apple siliconunsigned

88 MB, build 0c66cd7bd, uploaded 2026-10-06 10:31 UTC

GeneralsXZH-macos-arm64-0c66cd7bd.zip
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.

If you also see a file called 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.

If your Zero Hour folder contains 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.
Keep 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
You only need 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.

  1. Quit the game if it is running.
  2. Download the zip above again. The filename carries the build, so a new name means a new build.
  3. Unzip it and drag GeneralsXZH.app over your old one, replacing it.
  4. 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

x86-64glibc 2.39+

77 MB, build 0c66cd7bd, uploaded 2026-10-06 10:30 UTC

GeneralsXLauncher-linux-x86_64-0c66cd7bd.AppImage
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
The Linux launcher will not fetch the engine for you. You still need the tarball above. macOS is different: the launcher there already fetches the engine.
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.

Black screen, then quits
The data folder is incomplete. Zero Hour’s music list includes tracks from the original Generals, and a missing one ends the process before the first frame with nothing on screen. Re-copy the folder and let it finish.
“You serious?”
The engine found no game data at all. This is what an empty ~/GeneralsX/GeneralsZH looks like. Check the path in the place step.
Cannot join a friend
You are on different builds. Both of you update to the same version; mismatched engines refuse each other rather than desync mid-match.
Sound but no music
Expected on a Zero Hour-only install. Zero Hour ships 7 of the 57 tracks its music list asks for; the other 50 live in the original Generals. Put the Generals files in ~/GeneralsX/Generals if you own it. Do not reinstall; it will not help.
No games listed
Nobody is hosting right now, or you are both hosting into the same pinned room. Unless you were asked to set one, there should be no 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.