Launcher

From xiv.zone
Revision as of 18:22, 3 May 2025 by Redstrate (talk | contribs) (Add fromAppWaitPlay event)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The FFXIV Launcher.

The launcher basically display webpages.

This page only covers the Launcher from the Global Region. Other regions have their own bespoke launcher, such as in the China and Korea.

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 recreation by Ioncannon, as no one took a screenshot of the original login page I guess.

2.x

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

6.x

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.x.

7.21

In Patch 7.21, they are now (finally) switching to WebView2. This is currently a soft requirement, it's trivial to skip it by killing the WebView2 installer or through other methods.

Browser Engines

The launcher supports two browser engines:

  • MSHTML (Internet Explorer 11) which is BrowserType 0, 1
  • WebView2 (Chrome) which is BrowserType 2

Debugging

Run C:\Windows\System32\F12\IEChooser.exe while the launcher is running. Or if you're using the WebView2 backend, set WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS="auto-open-devtools-for-tabs".

Native Communication

To communicate with native code, it uses window.chrome.webview.postMessage. This is shortened to window.external.user with this function:

window.external.user = function (e) { window.chrome.webview.postMessage(e); }

Functions

systemConfig

Opens the system config program.

requestExit

Exits the launcher.

requestReboot

Despite the name, the launcher doesn't come back from quitting. Maybe used on console?

link

Opens an external URL in your default web browser.

eulaOk

Sets the EulaAgreement in your FFXIV_BOOT.cfg to 1.

requestDP

{"id": 1}

requestConfig

{"lang":"en","region":2,"eula":0,"startup":0,"issteam":0,"query":"none","ver":"2025.03.10.0000.0001(11500960)","skip_confirm_expansion_install_dialog":"0","installedExVersions":"","dx11available":"1","dx11enabled":"1","maxex":"-1","characreation":"0","is64bit":"1","product":"-1","browser":"2","ie11available":"1","theme":"0","dataCenter":"0","productization":"-1","product_ex":"0"}

requestDisplaySettings

{"bg":"{\"v\":700,\"d\":[1,0,0,0,0,0]}"}

requestResumeInfo

{"state":0,"ID":9}

config(cfg)

Sets a FFXIV_BOOT.cfg value. Possible values are:

  • theme
  • dataCenter
  • lang
  • dx11enabled
  • region

Events

fromAppExAgree

If the user did not accept these agreement and tries to login, the event is triggered:

{"notAgreedExEulas":"1,2,3,4,5"}

fromAppStartVersionCheck

Called when starting to login.

{"versionChecking":"Checking FINAL FANTASY XIV.","cis_sessid":"{session_id}","maxex":5,"product":1,"characreation":0,"exregskip":0,"ID":1}

fromAppWaitPlay

Called when successfully logged in and the version passes the check?

{"forceFocus":1,"ID":6}

User Agent

Example: SQEXAuthor/2.0.0(Windows 7; ja-jp; 5fd2faa332)

Other Possible User Agents

  • Windows: "sqex"
  • macOS: "macsqex
  • PS4: "playstation 4"
  • PS5: "playstation 5"
  • XBox: "xbox"

Build Paths

c:\\ws\\ver_720_winbuild\\branches\\ver_720\\trunk\\prog\\patch\\Build\\LauncherWin