Elite: Dangerous launcher fails to start

elite-dangerouselite-dangerous-horizonswindows 10

After a couple years playing Elite: Dangerous on Windows 10 (Horizons, on Steam), my installation abruptly stopped working a couple weeks ago. (There has been one game update since then, but installing it did not fix my issue.)

Initially, the launcher (EDLaunch.exe) just silently failed, without appearing in the taskbar or displaying any windows; you could see it briefly (for less than a second) in Task Manager before it quit. It didn't matter whether I started via Steam, via SteamVR, by using my pinned taskbar icon, double-clicking the EDLaunch.exe icon, or via Dr. Kaiii's EDProfiler program.

After following all the steps on Frontier's knowledge base article on troubleshooting launcher issues, I opened a ticket with Frontier. They suggested the following steps:

  1. First, turn off .NET in Windows Features. An easy way to access this is to type Windows Features in Start > Search. Make sure that all
    available versions of .NET are disabled.
  2. Open Programs and Features from the Windows Control Panel. An easy way to bring this up is to type 'Programs and Features' into Start >
  3. Uninstall everything that starts with Microsoft .NET, starting with the highest version numbers first (you may find that no entries
    exist in Programs and Features at all, in this case please continue to
    step 4)
  4. Download and install all versions of .NET that apply to your versions of Windows:

I followed these steps up until 4, installing .NET Framework 4.6.1. This installer failed; its error messages told me that because my machine already has .NET 4.7.2, I would not be permitted to install 4.6.1. (It appears to be impossible to uninstall .NET 4.7.2 on Windows 10 when it came with the OS update, at least using the instructions above.)

I rebooted, turned .NET back on in Windows Features, and rebooted again. Now, while the launcher continued not to work, it did display an error message:
Unhandled Exception error

Again, it has the same behavior regardless of how I try to start it.

(I have searched my PC for a file called CobraBayWindow.xaml, it it appears not to exist on my machine, nor on the machines of some other players I asked whose installations work.)

This exception has been discussed in one Reddit thread, but the solutions discussed there seem to also point to .NET and don't suggest any new troubleshooting steps for me.

My DxDiag.txt file after applying these latest .NET changes shows three edlaunch.exe problems (WER4, WER5, & WER6), all with the same text:

+++ WER6 +++:
Fault bucket 2236876271833650918, type 5
Event Name: CLR20r3
Response: Not available
Cab Id: 0

Problem signature:
P1: edlaunch.exe
P2: 0.4.6496.0
P3: 5c18c354
P4: PresentationFramework
P6: 5a7d2e52
P7: 626a
P8: e1
P9: System.Windows.Markup.XamlParse

I'm lost about what I might try next to try to resolve this issue.

Best Answer

A few days after I posted the above, the problem went away without any reason I could see, and then came back a few months later and I found a solution, so I wanted to document my answer the question.

It turns out that the EDLaunch.exe is dependent on particular .NET Framework versions (as I hypothesized in the question)—but what I didn’t get was that when you do either of the following:

  1. Accept a prerelease (or possibly brand-new stable release, if Frontier Developments hasn’t issued an update first) version of Windows 10, .NET Framework, or
  2. Install Visual Studio Code

you will get a mandatorily upgraded .NET Framework.

I was aware of #1, the Windows/.NET Framework upgrading issue—and this is likely the issue that Rob Chase was experiencing in their rejected answer saying a reinstall of Windows was necessary.¹

But in my case, it was #2, installing Visual Studio Code (which, ironically, I first installed on my gaming machine to look at XML files like the ones I was scrutinizing above more comfortably). Installing Visual Studio Code results in a new version of .NET Framework being installed which is designed to sit alongside the primary version Windows is running.

(Visual Studio Code is packaged in a somewhat unusual format (for Windows) in that it can be installed from the Windows Store, but isn’t a proper Universal Windows Platform app because—being a compiler—it needs to do things that aren’t allowed in the UWP sandbox. From commentary on the first draft of this answer, I think that is what leads to the strange behavior here, as Visual Studio Code installs a .NET Framework for it to work with, not intending for anything else to use it, but EDLaunch sees it and somehow gets confused.)

EDLaunch.exe may latch onto it but be unable to use it because minor versions can introduce incompatibilities (only patch or build levels at the same minor version are fully interoperable). This was what was causing the exception in the error screenshot.

I’m not a Windows expert by any means, but apparently this latching is persistent once an update of EDLaunch.exe is successful, because the steps I had to follow to eliminate the issue and start Elite normally were:

  1. Uninstall Visual Studio Code and verify via “Windows Features” that only a single .NET Framework remains on the system
  2. Start EDLaunch.exe (a reinstall may be necessary)
  3. Start the game and exit again
  4. Quit the launcher
  5. Install Visual Studio Code once again

EDLaunch.exe continued to work normally—even after the next update of EDLaunch.exe came from Steam and the next patch of Visual Studio Code came from Microsoft. I don’t fully understand the mechanics here, but it is consistent with the FDev knowledge-base article about resolving .NET incompatibilities.

I think, ordinarily, this issue shouldn’t arise at all, when either the Elite launcher or Visual Studio Code is updated. But if it does, temporarily uninstalling Visual Studio Code should fix it—and if it doesn’t, reinstalling the Elite launcher should. Then you can reinstall Visual Studio as you like.

The most confusing thing for me in this situation is that, in the “Windows Features” step of the troubleshooting instructions quoted above, you may find a lot of .NET Framework versions (I had almost a dozen, spanning from versions 2.3 to 4.8), and they aren’t necessarily all conveniently grouped together in the collapsible outline view—you have to search for .NET (not .NET Framework, as that shows installed features matching either .NET or Framework) and uninstall all but the latest — except for the Visual Studio Code one, which you aren’t allowed to uninstall here because Visual Studio Code depends on it.

It’s confusing because most of the versions you need to delete will be together in the outline list, so if you get them, you may mistakenly think you’ve gotten them all—when another is hanging out elsewhere in a collapsed part of the outline. (VSC’s quasi-UWP format may be to blame for this weirdness.)

So the knowledge-base article may need to be expanded to explain this case—I don’t know how many Elite players will also be running Visual Studio Code on their machines, but if they are, they have additional steps to follow.

I hope this is helpful to anyone who may later experience this vexing issue.²

¹ (I suspect that if they had carefully scoured the Windows Features as I describe later, they may have been able to clear the offending version of .NET Framework without totally reinstalling Windows.)

² I neglected to include the text of the error message of which I posted a screenshot above. To improve searchability for this issue, I’ll include it here:

Unhandled Exception: Cannot create instance of 'CobraBayWindow' 
defined in assembly 
'EDLaunch, Version=0.4.6496.0, Culture=neutral, PublicKeyToken=null'. 
Exception has been thrown by the target of an invocation.
Error in markup file