Continuing our deep dive into how an updater works. There’s one thing without which the whole mechanism turns into a lottery: the update manifest — that same UpdateInfo.xml. Essentially it’s a map of which files the client should have, where they live, and what their properties are. If the map is wrong, it no longer matters how good-looking your launcher is.
When the updater starts its check, it relies entirely on that map. It doesn’t guess based on the client folder or hope for the best. It goes down the list and verifies every file against the rules.
A proper check is always multi-stage. First, does the file exist. Then, its size. And only then, its hash. Why in that order? Because size is a fast filter, and the hash checks the actual content. A file can be the same weight but completely different data. That’s exactly why, without a hash, you get invisible breakage that only surfaces once the game is running.
How CRC32 works
CRC32 is commonly used for this task. Not because it’s trendy, but because it’s a fast and practical option for mass file verification in patch systems. It works well where check speed and reliably catching changes both matter. One byte changes, and the checksum is already different.
Here’s where the important part begins. If a file fails the check, the updater doesn’t just log an error and give up. It queues the file for download, downloads the archive, unpacks it, then verifies integrity again. If something goes wrong, it retries. That loop — download, unpack, re-verify — is what makes the system mature.
On mismatches and errors in UpdateInfo.xml
Where things usually break for admins: a mismatch between a fresh UpdateInfo.xml and the archive set on the host. Or a rushed deployment where some files are still from the old build. Visually it looks like everything uploaded, but the client actually gets a version conflict, and you get a queue in support.
If you want fewer incidents after release, the discipline is simple: correct build and manifest first, then publish, then a test pass in both quick and full mode on a clean client, and only then announce it to players.
And yes, UpdateInfo.xml isn’t some checkbox-ticking service file. It’s the control center of the whole update. As long as the team understands that, updates go smoothly. Forget it, and you start getting mystery bugs.