Brazil's biggest MU Online portal — since 2003
Tutorial Intermediate Server

How to create an update launcher for MU Online

Complete guide to creating an update launcher for a MU Online server: what a launcher does (compares client files with the server and downloads only what changed), how the version list / patch list works (file hashes, sizes, and paths), how to host the update files on your website, configuring the launcher to point to your update server URL, the difference between launchers that download the whole client and patch-based launchers that update incrementally, how to handle a client update that changes hundreds of files efficiently, what to put on the launcher's interface (server news, social links, play button, background), common launcher problems and how to fix them (SSL errors, hash mismatches, download failures), and the best pre-built launcher solutions available for MU Online Season 6 servers.

RO Rodrigo · Updated on May 14, 2017 · ⏱ 12 min read
Quick answer

A launcher transforms how you maintain your server's client. Instead of redistributing gigabytes to players every time you change a texture or fix a bug, the launcher detects the difference and downloads only what changed.

A launcher transforms how you maintain your server's client. Instead of redistributing gigabytes to players every time you change a texture or fix a bug, the launcher detects the difference and downloads only what changed.

Nota: This guide covers the concepts and architecture of MU Online launchers. Pre-built launcher solutions exist in the community — this guide helps you understand how they work so you can configure and maintain them effectively.

How a launcher works (architecture)

THE LAUNCHER FLOW:

WHAT HAPPENS WHEN A PLAYER OPENS THE LAUNCHER:

1. LAUNCHER OPENS → shows interface (news, server info, social links)

2. VERSION CHECK:
   → Launcher downloads a version list file from your web server
   → File is usually: http://yourdomain.com/update/patchlist.txt (or similar)
   → This file lists every game file with its expected size and hash

3. LOCAL FILE CHECK:
   → For each entry in the version list, the launcher checks:
     → Does this file exist locally?
     → Is the file's size and hash the same as in the list?
   → Files that are missing or don't match → queued for download

4. DOWNLOAD PHASE:
   → Missing/outdated files downloaded from your update server
   → Usually shows a progress bar: "Updating 15/230 files..."

5. PLAY BUTTON ACTIVATES:
   → All files verified → Play button enables
   → Player clicks Play → launcher starts Main.exe

6. LAUNCHER MAY CLOSE OR MINIMIZE while the game runs

The patch list format

PATCH LIST / VERSION LIST FORMAT:

The exact format varies by launcher, but most use one of these patterns:

FORMAT 1 — TEXT FILE WITH PIPE OR TAB SEPARATOR:
filename|size|hash
Data\Interface\Loading.jpg|204800|a3f1c8b92e
BMP\Background.bmp|512000|b7e9f1a4c2
Main.exe|3145728|e8a1f7b3d9

FORMAT 2 — XML:
<files>
  <file name="Data\Interface\Loading.jpg" size="204800" hash="a3f1c8b92e" />
  <file name="BMP\Background.bmp" size="512000" hash="b7e9f1a4c2" />
</files>

FORMAT 3 — JSON:
{
  "version": "1.5",
  "files": [
    {"path": "Data/Interface/Loading.jpg", "size": 204800, "md5": "a3f1c8b92e"},
    {"path": "BMP/Background.bmp", "size": 512000, "md5": "b7e9f1a4c2"}
  ]
}

CHECK YOUR LAUNCHER'S DOCUMENTATION for the exact format it expects.
The hash is typically MD5 (32 hex chars) or CRC32 (8 hex chars).

Setting up web hosting for updates

WEB SERVER REQUIREMENTS FOR THE UPDATE SERVER:

WHAT YOU NEED:
→ A web server accessible from the internet (your game hosting, a VPS, or shared hosting)
→ Enough storage for the client files (2-5 GB is typical for S6)
→ Enough bandwidth for multiple players downloading updates simultaneously

FOLDER STRUCTURE:
/public_html/update/            ← the root update URL
    patchlist.txt               ← the version list file
    /Data/                      ← mirror of the client's Data folder
        Interface/
            Loading.jpg
        ...
    /BMP/
        Background.bmp
    /Sound/
        ...
    Main.exe
    Launcher.exe

IMPORTANT:
→ The update folder structure must MIRROR the client folder structure
→ If Data\Interface\Loading.jpg is in the version list:
  → The file must exist at: http://yourdomain.com/update/Data/Interface/Loading.jpg
→ The web server must allow direct file downloads (no PHP processing of game files)

SPEED CONSIDERATIONS:
→ If 50 players all update simultaneously, each downloading 10 MB of patches:
  → 50 × 10 MB = 500 MB of transfer needed
→ Ensure your hosting bandwidth can handle peak update loads

Configuring the launcher

TYPICAL LAUNCHER CONFIGURATION FILE:

Most pre-built launchers have a config file (launcher.ini, config.xml, or similar):

; EXAMPLE launcher.ini:
[Server]
Name = My MU Server
Website = https://www.mymuserver.com
Discord = https://discord.gg/myserver

[Updates]
BaseURL = https://www.mymuserver.com/update/
PatchList = patchlist.txt
PatchListURL = https://www.mymuserver.com/update/patchlist.txt

[Game]
MainExecutable = Main.exe
LaunchParams = -window   ; optional launch parameters

[News]
NewsURL = https://www.mymuserver.com/launcher-news.json
; The launcher fetches and displays news from this URL

[Background]
Image = launcher_background.jpg   ; image file in the launcher folder

Generating and updating the patch list

UPDATING THE PATCH LIST WHEN YOU CHANGE FILES:

MANUAL METHOD (small servers):
1. When you change a game file (e.g., update a texture)
2. Calculate the new file's hash (use tools like Hasher or CertUtil)
3. Update the entry in patchlist.txt with the new hash and size
4. Upload the new file to the update web server
5. Upload the updated patchlist.txt
6. Next time players open the launcher: they get the update

AUTOMATED METHOD (recommended for larger servers):
Use a batch script or PowerShell that:
1. Scans the client folder
2. Calculates MD5 hash for each file
3. Writes the patchlist.txt automatically

; Windows CMD example (uses CertUtil for MD5):
for /r "C:\ClientFolder" %%F do (
  for /f "skip=1" %%H in ('CertUtil -hashfile "%%F" MD5') do (
    echo %%~nxF|%%~zF|%%H >> patchlist.txt
    goto :next
  )
  :next
)

→ Then upload the generated patchlist.txt and the changed files

Launcher interface design

WHAT THE LAUNCHER INTERFACE SHOULD SHOW:

ESSENTIAL ELEMENTS:
→ Server name and logo prominently
→ Play button (large, obvious) — disabled until update completes
→ Update progress bar — shows when checking/downloading files
→ Status text — "Checking files...", "Updating 15/230 files...", "Ready to play!"

NICE TO HAVE:
→ Server status indicator: Online / Offline / Maintenance
→ Player count live (requires an API endpoint from your server)
→ News panel — patch notes, event announcements, scheduled maintenance
→ Social links — Discord, Facebook, YouTube, website
→ Server rates at a glance: EXP, Drop, Reset info
→ Background image — the server's themed artwork

BACKGROUND IMAGE SPEC:
→ Common dimensions: 800x500 or 1000x600 pixels
→ Format: JPG or PNG
→ File size: under 1 MB (launcher loads faster)
→ Artwork that matches the server's theme: MU environments, character art

COMMON MISTAKES TO AVOID:
→ News that hasn't been updated in weeks → players lose trust in the server's activity
→ Player count that shows "0" or doesn't load → it's better to hide it than show wrong data
→ No announcement when the server is down → players see "can't connect" with no explanation
Atenção: Always test a new patch before marking it live in the version list. A wrong hash or a corrupted file in the update server means EVERY player's launcher breaks on the next check. They can't even open the game. Always test the update on a spare installation before pushing it to the server.

Common launcher problems and fixes

TROUBLESHOOTING:

PROBLEM: Launcher says "Error connecting to update server"
→ Cause: PatchListURL is wrong or unreachable
→ Fix: open the URL in a browser → you should see the patchlist.txt file
→ If you get a 404 or timeout: check the file is uploaded to the right path

PROBLEM: Launcher gets stuck downloading the same file repeatedly
→ Cause: hash in patchlist.txt doesn't match the file on the server
→ Fix: recalculate the file's hash and update patchlist.txt

PROBLEM: Players download the update but the game still won't connect
→ Cause: the issue is with the server connection (Main.exe IP config), not the launcher
→ Fix: check Main.exe configuration and ConnectServer ports

PROBLEM: Launcher triggers antivirus warnings
→ This is normal for unsigned executables — the same issue as the client installer
→ Solution: add an antivirus exception instruction in your server's download page

Pair this guide with the client installer tutorial (for getting the initial client to new players before the launcher takes over), the Main and login screen editing tutorial (for configuring what the launcher opens), and the website hosting tutorial (since the launcher depends on a web server to host the update files).

Frequently asked questions

What is a MU Online launcher?

A launcher is the program players open first, before the game itself. It has two jobs: (1) Check if the player's game files match the server's current version, and download any missing or outdated files. (2) Launch the game executable (Main.exe) after the update is complete. Most launchers also show server news, social buttons, player count, and server status. Without a launcher, every client update requires redistributing the entire client to every player.

What is a patch list / version list?

The patch list is a file hosted on your web server that tells the launcher which files should exist, what size they should be, and what their hash (fingerprint) is. The launcher reads this list, compares each entry to the player's local files, and downloads anything that doesn't match. When you update a file on the server, you update its entry in the patch list — the launcher automatically distributes the update to all players on next launch.

Do I need to code a launcher from scratch?

No. The MU Online community has pre-built launcher solutions that you configure rather than code. Some are fully graphical with news panels, background images, and social links. You typically need to: (1) Configure the launcher to point to your update server URL. (2) Create and maintain the patch list. (3) Set up the web hosting for the update files. The hard part is the infrastructure, not the coding.

How do I handle a very large client update (1+ GB change)?

For massive updates, consider distributing a 'patch installer' separately instead of updating through the launcher. The launcher works best for incremental updates (a few changed files per patch). For a major version change, release a new full installer and have the launcher only handle small patches after that. This avoids asking players to download 1 GB through the launcher (which has no download resume if interrupted on most implementations).

RO
Founder & editor-in-chief

Rodrigo has run ViciadosMU since the portal's early days. A specialist in MU Online server creation and administration, game history and the evolution of the seasons — he wrote much of the archive before 2024.

Keep reading

Related articles

🛡️
Tutorial

How to Create Advanced Launcher with Update System for MU

Learn to build a professional launcher for MU Online S6 with automatic patch system, file integrity verification, and custom login screen.

12 min · Advanced ·
🖌️
Tutorial

How to edit the Main, login screen and client resolution

Complete guide to customizing a MU Online private server client: what the Main.exe controls (server connection, client behavior, texts), the two methods for changing the server IP in the client (config file vs hex editor), how to use HxD to safely hex-edit Main.exe and replace the hardcoded IP, how to change the login background image (correct file format, dimensions, and location by season), how to edit the WTF file and text files to customize in-game messages and item names, how to fix broken accent characters (locale setting, font files, encoding), how to configure the client resolution for modern widescreen monitors, a full list of tools you need for client editing, and the safety checklist before distributing a modified client.

12 min · Advanced ·
📦
Tutorial

How to create a client installer for your MU Online server

Complete guide to creating a professional installer for your MU Online server client: what a client installer does and why it matters for player onboarding, what files must be included in the client package (game binaries, custom textures, sounds, launcher), how to prepare the client folder before building the installer, the most-used free tools for creating Windows installers (Inno Setup and NSIS), step-by-step walkthrough with Inno Setup to build a .exe installer, how to add prerequisites (DirectX, Visual C++ Redistributable) to the installer, how to test the installer on a clean machine, hosting the installer for download, how to reduce antivirus false positives, and how to pair the installer with a launcher for automatic future updates.

12 min · Intermediate ·