Hi!
I’ll provide a comprehensive explanation of how UnrealVersionSelector.exe works so that other users can refer to it for similar problems.
When you open a .uproject file, UnrealVersionSelector.exe runs to pick the right Editor version based on the EngineAssociation value in the .uproject file.
This happens because UnrealVersionSelector.exe should be the default file association for uproject files, which you can see in the Windows Registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Unreal.ProjectFile\shell\open\command "C:\Program Files (x86)\Epic Games\Launcher\Engine\Binaries\Win64\UnrealVersionSelector.exe" /editor "%1"
The registry will have the other .uproject right click commands there also.
If the file associations aren’t set up for you, for example, you’ve received the UE version from other sources than an installation, you can launch `UnrealVersionSelector.exe -fileassociations` and it will set them up for you. You don’t need to touch these manually.
When UnrealVersionSelector.exe launches, it queries the computer for the list of all Unreal Engine installations. It queries two locations for those installations.
The first one is where the Epic Games launcher keeps its installations. That’s stored in a json file: C:/ProgramData/Epic/UnrealEngineLauncher/LauncherInstalled.dat.
That file lists them in this format:
{ "InstallationList": [ { "InstallLocation": "D:\\Bin\\Epic Games\\UE_5.5", "NamespaceId": "ue", "ItemId": "1b3c549b6a724e90ad94d9c1f410bc96", "ArtifactId": "UE_5.5", "AppVersion": "5.5.4-40574608+++UE5+Release-5.5-Windows", "AppName": "UE_5.5" } ] }
Notice that the AppName is “UE_5.5”, which would match a .uproject file’s EngineAssociation value of “5.5”. The “UE_” part in LauncherInstalled.dat is ignored.
That file should only contain installations that come directly from the Epic Games Launcher. I list this for information/debugging reasons.
The second location UnrealVersionSelector.exe queries is the Windows Registry. This is for users’ custom builds. The registry key is “HKEY_CURRENT_USER\Software\Epic Games\Unreal Engine\Builds”.
Those generally have generated GUIDs created by UnrealVersionSelector.exe as the engine association. However, there’s nothing stopping you from putting “5.5” as a registry value’s name. This would be the right place for you to put in a custom installation pretending to be a Launcher version.
There’s a third way a project can be associated with an engine: when the engine is installed in a directory relative to the project. In that case, the value of `EngineAssociation` is empty.
UnrealVersionSelector will then traverse up the parent folders, looking for an `/Engine` folder to open the project with. This is how it’s usually done when a project is using a source version of Unreal Engine. In that case, the project is a Native project. You can see more info on a Native project folder structure here in our documentation: https://dev.epicgames.com/documentation/en\-us/unreal\-engine/managing\-game\-code\-in\-unreal\-engine\#nativeprojects, and in this presentation: Setting up an Unreal Engine Studio the Epic Way | Tutorial.
We at Epic Games make most of our projects, including Fortnite, as Native projects using a source version of the engine, and we generally recommend studios use that workflow once they’re past a “small” size. That way they can use Unreal Game Sync and Horde, which only work with Native projects. You can see more about “The Epic Way” of setting up an Unreal Engine Studio in this article: Setting up an Unreal Engine Studio the Epic Way | Tutorial