XIV Docs

Executables

Updater (ffxivupdater.exe)

Note

This documentation is incomplete.

The program that processes the patch files and applies them to the game or boot data.

Arguments #

Note

Just like the other executables, it requires you to pass these using the SqexArg format.

Processes #

During update execution, the launcher copies the updater executable into your UserPath/downloads directory, where it is then ran. I’m assuming this is to work around a Windows limitation where you can’t update the executable on disk, so it has to be ran from a location where it could “update” itself.

ShowMode 2 #

This is the regular retail patching mode, and it runs ffxivupdater64.exe in a hidden window that’s just there for message processing. I’m not sure yet if ffxivupdater.exe is the one actually downloading the patch files yet. The launcher just reflects ffxivupdater’s progress, and passes it along to the web form in the form of a json callback. You can set a breakpoint at 0x183278 (tested on the launcher ver 3/20/2022) and see that it first hits that area when updating. There is three seperate printf strings, which I’m guessing is the three “modes” of patch progress:

OffsetString Data
1400e6df0{version:"%s",remaintime:"%s",progress:%6.2f} u"{version:"%s",remaintime:"%s",progress:%6.2f}"
1400e75a0{version:"%s",downloadsize:"%s",remaintime:"%s",speed:"%s",progress:%6.2f}
1400e76c0{version:"%s",remaintime:"%s",speed:"%S",progress:%6.2lf}

(The offsets are tested on 3/20/2022) The first one appears very minimal but might be the one used when it’s not downloading/installing any patches yet, and just gathering information. The second one appears to be the regular “downloading” patch mode, considering it says “downloadsize” right there. The last one would appear to be when it’s actually applying the patches, as it has “remaintime” as well as “speed”.

IPC #

It looks like this communicates exclusively through Win32 IPC (SendMessage). I haven’t deciphered all of the messages yet, but here is a few interesting ones I’ve seen used:

Alternative Implementations #


Launcher (ffxivlauncher.exe)

This is the program that logins into the official servers and launches the game.

History #

Since FFXIV has been around for a long time, it’s went through several launcher redesigns.

1.x #

This is the launcher used for 1.x, before A Realm Reborn. This screensot is a recreation by Ioncannon, as I can’t find the original login page anywhere online.

The old launcher design

2.x #

This launcher design was launched with A Realm Reborn and had been in service until Endwalker.

The old launcher design

6.5+ #

This is the current iteration of the launcher, and the old launcher can no longer be used and all users must use the new design (as of 6.5+)

The new launcher design

Internals #

The launcher is wrapper of a website, and the page is served by the Frontier server on URLs such as https://frontier.ffxiv.com/version_4_0_win/index.html?1559390056785.

In order for the launcher to actually launch anything useful, it uses JavaScript callbacks into native code.

For details on how logging into the Square Enix servers work, see the relevant page on this concept.

Arguments #

Note

Like the other executables, it requires you to pass these using the SqexArg format.

Alternative Implementations #


Installer (ffxivinstaller.exe)

This is not a standard InstallShield installer (at least to my knowledge) but seems to a self-extracting executable and then some form of InstallShield executable.

If you only care about the .cab files (which can then be read with your usual installshield libraries/tools like unshield) then they are contained right in the executable, uncompressed.

To find them, simply find the needle string “Disk1\{FileName}” where FileName is the cab filename. They are as follows:

They are simply put right next to each other in the executable, so if you follow that order you’ll find each of them quite easily.

Alternative Implementations #


Client (ffxiv.exe)

This is the game client executable.

Note

There are two separate executables for DirectX 11 and DirectX 9. The DX11 version is named ffxiv_dx11.exe. The DX9 version will be removed in a future update.

Arguments #

Note

Unlike other executables, passing arguments encrypted with SqexArg is optional for the client. It’s recommended that you do so if you’re planning to use actual SIDs though.

There a few known arguments that work on the normal game client:

Note

For benchmark versions of the game, there is a whole host of graphical options available as game arguments - but this seems to be missing in the retail version.

Alternative Implementations #


Boot (ffxivboot.exe)

Note

This documentation is incomplete.

This executable handles launching ffxivlauncher.exe, and also patching “boot files” (aka anything inside of the GameInstall/boot folder).

Alternative Implementations #


Benchmarks

There have been several benchmarks publicly released, which are modified client executables that replay several cutscenes (usually made exclusively for the benchmark) and can create character creation save data.

Despite the official FFXIV Benchmark site only displaying the latest expansion, all previous benchmarks are still accessible. An archive of all links are provided below.

Note

ARR and Heavenward place the benchmark files under a /inst directory on their server. Expansions afterward, place it under a directory with a directory with a seemingly randomized string such as ’nr2xkhecw9vrkuqy'.