Files
iw4L/docs/WINDOWS.md
T
2026-09-13 13:52:33 +03:00

3.5 KiB

Portable Windows folder

make launcher windows creates dist/windows/iw4l-windows-dev.zip and dist/windows/iw4l-windows-prod.zip. Both archives use the password contextrot and are self-contained — the game binary is in the archive, so the folder runs with no network at all:

.env
iw4l-ca.pem
iw4launcher.exe
iw4l.exe
LICENSE
NOTICE
OFL-Oxanium.txt
COPYING-FreeFont.txt

The four licence files are not decoration: iw4l.exe has both fonts compiled into it with include_bytes!, so an archive carrying the binary carries their licences too. release.rs::LEGAL_FILES is the list, and a build that ships without them is the bug.

Extract the selected archive into any dedicated folder and add ordinary Windows .lnk shortcuts to installed Call of Duty title folders or title executables. MW2 Multiplayer files are required for the menu (zone/**/common_mp.ff); a folder containing only zone/dlc/*.ff is insufficient. BO1 and MW3 are optional. Run the launcher; it starts the game without modifying those installations.

Updating is something you ask for. Plain iw4launcher.exe starts the iw4l.exe that is already in the folder and touches nothing else. Fetching a newer build is iw4launcher.exe update (or IW4L_UPDATE=1 for a shortcut that cannot pass an argument), which needs IW4L_UPDATE_URL in the portable .env. No build replaces its own binary on its own. How a release gets published is DEPLOY.md.

Steam shipped MW2 and MW3 re-releases whose FastFiles are serialized with 64-bit pointers. MW2 is read in both serializations; MW3 x64 zones are detected and refused, so an MW3 shortcut to such an install contributes no weapons and no maps, and says so in the log (IW5 zone is serialized x64 (Steam re-release)).

iw4l-portable/
├── iw4launcher.exe       from the archive
├── iw4l.exe              from the archive; replaced only by `iw4launcher update`
├── iw4l-ca.pem           public trust anchor
├── LICENSE NOTICE …      the four licence files, kept with the binary
├── .env                  from the archive; player edits win forever
├── Modern Warfare 2.lnk  target: game folder or title .exe
├── Black Ops.lnk         optional
├── Modern Warfare 3.lnk  optional
└── iw4l-artifacts/       saves, caches, demos, logs and captures

The folder containing the two executables is the process working directory even when Explorer supplies another one. IW4L_GAMES defaults to this folder on Windows; .lnk targets directly inside it are additional read-only search roots. An explicit IW4L_GAMES still works and may itself contain shortcuts.

.env is loaded before release-manifest defaults. The launcher creates it only when missing and never overwrites it. IW4L_UPDATE_URL is read only by iw4launcher.exe update, never by a plain start; the same iw4launcher.exe serves both channels.

IW4L_UPDATE_URL=https://host:8443/prod
IW4L_MASTER_ADDR=master.example.net:4433
IW4L_MASTER_SERVER_NAME=iw4l-prod
IW4L_MASTER_CA_CERT=iw4l-ca.pem

An unreachable master is not a launch error: the browser keeps retrying and shows the connection error. All writable game state stays below iw4l-artifacts/ (including Windows settings.cfg, unless IW4L_SETTINGS_PATH overrides it); shortcut targets are never output paths.

Startup errors print the detected FastFile counts, missing base assets and log path in the console. On Windows, an interactive console waits for Enter before closing; redirected input exits immediately with code 2. No extra dialog opens.