rfvgyhn / min-ed-launcher

Minimal Elite Dangerous Launcher
MIT License
251 stars 9 forks source link

Fails to close EDOMH #90

Closed Fixitman333 closed 1 year ago

Fixitman333 commented 1 year ago

Describe the bug/error I have the launcher set to launch ED Discovery (EDD), Elite Dangerous Odyssey Materials Helper (EDOMH), and Elite Dangerous Odyssey (EDO). Everything launches normally. When I exit EDO, the launcher properly closes EDO and and EDD. It then fails to close EDOMH, and I'm given the option to "press any key to close" the launcher.

EDOMH can be found at: https://github.com/jixxed/ed-odyssey-materials-helper

Debug log 2023-03-27 18:26:10.074 -04:00 [INF] Elite Dangerous: Minimal Launcher - v0.8.1+6145fdf5 2023-03-27 18:26:10.145 -04:00 [DBG] Args: [|"/frontier"; "profile-name"; "Name"; "/autorun"; "/autoquit"; "/edo"|] OS: Win64 Env:

; Deleted irrelevant info

2023-03-27 18:26:12.449 -04:00 [DBG] Authorized Products: Elite Dangerous: Odyssey,Elite Dangerous: Horizons,Legacy Horizons,Legacy Elite Dangerous,Elite Dangerous: Arena,Single Player Combat Training 2023-03-27 18:26:12.449 -04:00 [INF] Checking for updates 2023-03-27 18:26:12.934 -04:00 [DBG] Launcher is latest release 0.8.1 2023-03-27 18:26:12.939 -04:00 [DBG] Disabling 'Legacy Horizons'. Unable to find product at 'E:\Elite Dangerous\EDLaunch\Products\elite-dangerous-64\VersionInfo.txt' 2023-03-27 18:26:12.939 -04:00 [DBG] Disabling 'Legacy Elite Dangerous'. Unable to find product at 'E:\Elite Dangerous\EDLaunch\Products\elite-dangerous-64\VersionInfo.txt' 2023-03-27 18:26:12.939 -04:00 [DBG] Disabling 'Elite Dangerous: Arena'. Unable to find product at 'E:\Elite Dangerous\EDLaunch\Products\elite-dangerous-64\VersionInfo.txt' 2023-03-27 18:26:12.939 -04:00 [DBG] Disabling 'Single Player Combat Training'. Unable to find product at 'E:\Elite Dangerous\EDLaunch\Products\COMBAT_TUTORIAL_DEMO\VersionInfo.txt' 2023-03-27 18:26:14.412 -04:00 [INF] Available Products: Elite Dangerous: Odyssey FORC-FDEV-DO-1000 Up to Date Elite Dangerous: Horizons FORC-FDEV-DO-38-IN-40 Up to Date 2023-03-27 18:26:14.437 -04:00 [INF] Starting process E:\Elite Dangerous\EDDiscovery\EDDiscovery.exe 2023-03-27 18:26:14.437 -04:00 [INF] Starting process E:\Elite Dangerous\EDO Mat Helper\Elite Dangerous Odyssey Materials Helper Launcher.exe 2023-03-27 18:26:14.644 -04:00 [INF] Launching Elite Dangerous: Odyssey 2023-03-27 18:26:14.651 -04:00 [DBG] Process: E:\Elite Dangerous\EDLaunch\Products\elite-dangerous-odyssey-64\EliteDangerous64.exe "ServerToken 8a1...8b2[120] 597...22f[788] " /language English\UK /novr 2023-03-27 22:03:33.343 -04:00 [INF] Shutdown Elite Dangerous: Odyssey 2023-03-27 22:03:33.345 -04:00 [DBG] Stopping process EDDiscovery 2023-03-27 22:03:35.444 -04:00 [INF] Stopped process EDDiscovery 2023-03-27 22:03:35.467 -04:00 [ERR] Unhandled exception: System.InvalidOperationException: NoProcessInfo at System.Diagnostics.Process.EnsureState(State) at System.Diagnostics.Process.get_ProcessName() at MinEdLauncher.Process.stopProcesses(FSharpList`1) at MinEdLauncher.App.run@258.MoveNext() at MinEdLauncher.Program.run@65-21.MoveNext() at MinEdLauncher.Program.run@63-20.MoveNext() at MinEdLauncher.Program.run@62-19.MoveNext() at MinEdLauncher.Program.run@72-22.MoveNext() at MinEdLauncher.Program.run@75-23.MoveNext() at MinEdLauncher.Program.main(String[])

Fixitman333 commented 1 year ago

I noticed that "Elite Dangerous Odyssey Materials Helper Launcher" was listed as "Elite Dangerous Odyssey Materials Helper" in task manager. I changed the filename, and edited settings.json accordingly. The launcher behaved the same.

I also discovered a sub-name in task manager spelled "ED Odyssey Materials Helper". I tried the rename and json edit again, but it didn't help.

Finally, I removed EDOMH from the json file. The launcher closes EDD and itself normally now. I'll continue to manually launch and close EDOMH until a fix can be looked into.

rfvgyhn commented 1 year ago

Looks like EDOMH runs via another process (the launcher). I only skimmed the launcher code so I might have missed something, but it looks like the launcher is used to check for and download updates. One thing you could try as a workaround is directly running EDOMH by specifying the path to it instead of the launcher in settings.json. I'm not 100% certain that will work though as it may require some arguments I'm unaware of. You'd have to manually run the launcher when a new update is released though (maybe subscribe to the repo for notifications). Definitely not ideal, but might get things working until I can figure something out for min-e-launcher.

At the very least, min-ed-launcher shouldn't crash when trying to shut it down. Off the top of my head, I'm not sure how easy/difficult it will be to keep track of child processes.

Fixitman333 commented 1 year ago

I can bypass the launcher portion with a shortcut, so I've verified the launcher is only required for updates. I edited my settings.json file to launch the EDOMH main file, using the target field in the shortcut.

EDD still launches with EDO, but EDOMH does not. I've verified EDOMH isn't running via task manager. When I close EDO, EDD still closes, then EDOMH launches. It's acting like I've added EDOMH within shutdownProcesses., but it doesn't appear I've done so. Did I mess up on the syntax?

settings.json: { "apiUri": "https://api.zaonce.net", "watchForCrashes": false, "language": null, "autoUpdate": true, "checkForLauncherUpdates": true, "maxConcurrentDownloads": 4, "forceUpdate": "", "processes": [ { "fileName": "E:\Elite Dangerous\EDDiscovery\EDDiscovery.exe", }, { "fileName": "E:\Elite Dangerous\EDO Mat Helper\program\Elite Dangerous Odyssey Materials Helper.exe", } ], "shutdownProcesses": [], "filterOverrides": [ { "sku": "FORC-FDEV-DO-1000", "filter": "edo" }, { "sku": "FORC-FDEV-DO-38-IN-40", "filter": "edh4" } ], "additionalProducts": [] }

Fixitman333 commented 1 year ago

I left settings.json as above, used the launcher, then manually launched EDOMH. When I closed EDO later, the launcher behaved exactly as in my original post.

Fixitman333 commented 1 year ago

I've discovered that the same issue occurs if I manually close and restart EDD while EDO is running. Once I close EDO, the launcher is now unable to close EDD.

rfvgyhn commented 1 year ago

I've discovered that the same issue occurs if I manually close and restart EDD while EDO is running. Once I close EDO, the launcher is now unable to close EDD.

That's to be expected. If you manually start it, the launcher won't have a reference to the process's id.

rfvgyhn commented 1 year ago

I've fixed the crash and the issue where the GUI launches after the launcher shuts down.

I'm not sure how to get this application to run properly though. When specifying Elite Dangerous Odyssey Materials Helper.exe in the settings file, I see two EDOMH processes start (via task manager) but the GUI doesn't appear. Perhaps there are Java specific env vars that need to be set (grasping at straws at this point)?

Fixitman333 commented 1 year ago

There are just too many programming languages, as well as programming styles within them. Getting them all working with this 100% would require widespread collaboration among all ED application authors. I don't see that happening, so I've reverted to launching everything manually. Thank you for trying.