rfvgyhn / min-ed-launcher

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

The current Wine version 7.0 won't run min-ed-launcher latest Windows version. #44

Closed rizzini closed 2 years ago

rizzini commented 2 years ago

I bought the game from Epic and I'm trying to run it on Linux. So I followed the Epic Setup part. I tried many wine versions, but all of them give me some msg about stack overflow, which, in my experience, is untroubleshootable:

0108:err:virtual:virtual_setup_exception stack overflow 2064 bytes in thread 0108 addr 0x170030fc0 stack 0x207f0 (0x20000-0x21000-0x1a0000)

I don't know if it's my case, but I even tried Linux version:

╭─lucas@archlinux em /mnt/archlinux/Games/EliteDangerous levou 3s
╰─λ WINEPREFIX=~/.wine_elite_dangerous/ ./MinEdLauncher /autoquit /autostart /ED -auth_password=4073c5077e784523a3654eb9ee893e05
[23:45:10 INF] Elite Dangerous: Minimal Launcher - v0.5.4
[23:45:10 INF] Elite Runtime
Platform: Epic
CobraBay Version: 0.4.6709.0
Products Dir: /mnt/archlinux/Games/EliteDangerous/Products
[23:45:11 ERR] Couldn't login: 400: Bad Request

min-ed-launcher.log:

2022-01-22 23:45:12.911 -03:00 [INF] Elite Dangerous: Minimal Launcher - v0.5.4
2022-01-22 23:45:13.107 -03:00 [DBG] 
    Args: [|"/autoquit"; "/autostart"; "/ED";
  "-auth_password=407...e05"|]
    OS: Linux64

2022-01-22 23:45:13.142 -03:00 [DBG] Reading settings from '/home/lucas/.config/min-ed-launcher/settings.json'
2022-01-22 23:45:13.557 -03:00 [DBG] Settings: Ok { Platform = Epic { ExchangeCode = "407...e05"
                       Type = ""
                       AppId = "" }
     DisplayMode = Pancake
     AutoRun = false
     AutoQuit = true
     WatchForCrashes = false
     ProductWhitelist = seq ["autostart"; "ed"]
     ForceLocal = false
     Proton = None
     CbLauncherDir = "/mnt/archlinux/Games/EliteDangerous/"
     PreferredLanguage = None
     ApiUri = https://api.zaonce.net/
     Restart = None
     AutoUpdate = true
     MaxConcurrentDownloads = 4
     ForceUpdate = set []
     Processes = []
     FilterOverrides = seq [[FORC-FDEV-DO-1000, edo]] }
2022-01-22 23:45:13.612 -03:00 [INF] Elite Runtime
    Platform: Epic
    CobraBay Version: 0.4.6709.0
    Products Dir: /mnt/archlinux/Games/EliteDangerous/Products
2022-01-22 23:45:15.084 -03:00 [DBG] Requesting epic token
2022-01-22 23:45:15.667 -03:00 [DBG] Requesting epic token failed: {"errorCode":"errors.com.epicgames.account.oauth.exchange_code_not_found","errorMessage":"Sorry the exchange code you supplied was not found. It is possible that it was no longer valid","messageVars":[],"numericErrorCode":18057,"originatingService":"com.epicgames.account.admin","intent":"prod","error_description":"Sorry the exchangecode you supplied was not found. It is possible that it was no longer valid","error":"invalid_grant"}
2022-01-22 23:45:15.693 -03:00 [ERR] Couldn't login: 400: Bad Request

What am I missing here?

rfvgyhn commented 2 years ago

I haven't attempted to use the launcher via wine for a long time. I'll see if I can reproduce/fix the issue when I get some time.

The log shows that the Epic API rejected your exchange code. Was that the first time you attempted to use it or was it reused from another attempt? It does expire after a single use which makes it pretty inconvenient to play via Epic on linux.

There may be a way to launch via legendary which might make things easier. I'll try a few things with that too and let you know what I find.

rizzini commented 2 years ago

Was that the first time you attempted to use it or was it reused from another attempt?

That rejection happens every time. I made a quick video yesterday showing how I'm getting the code, but I forgot to paste the link here: https://gofile.io/d/tmw0Iw.

I actually tried using Legendary a lot, but I end up with that stack overflow Wine issue since legendary uses Wine to run the games. It basically runs the same command under the hood I use to run through Wine.

rizzini commented 2 years ago

Today I got a different message. I won't paste the full msg here, because it's big.

Error msg: 2022-01-23 08:29:12.636 -03:00 [ERR] Couldn't login: Couldn't parse json - ExpectedStartOfValueNotFound, < LineNumber: 0 | BytePositionInLine: 0.

Terminal log. min-ed-launcher.log

rizzini commented 2 years ago

It seems the json parse error happens when the Epic exchange code is accepted. Now I'm pressing ESC on my browser when Epic Launcher tries to open the page to manage my account, so the code it's not being used anymore. You were right the first time. But now we have this json parse error.

rfvgyhn commented 2 years ago

FDev's API is returning an HTML response instead of JSON. Has your FDev account been linked with your Epic account? I have seen this happen occasionally at seemingly random times, but I'm not sure why would it happen all the time.

rizzini commented 2 years ago

FDev's API is returning an HTML response instead of JSON. Has your FDev account been linked with your Epic account? I have seen this happen occasionally at seemingly random times, but I'm not sure why would it happen all the time.

You nailed, bro!! That HTML code was the registration page. I just linked the account and it's all good. Thank you, guys!!!

rfvgyhn commented 2 years ago

FYI, I fiddled around with legendary a bit and you can get an auth code much easier than via your browser.

legendary launch --dry-run 9c203b6ed35846e8a4a9ff1e314f6593 2> >(grep AUTH_PASSWORD) | sed -ne 's/^.*-AUTH_PASSWORD=\([a-z0-9]*\).*$/\1/p'

The next step would be to have min-ed-launcher accept input from STDIN and then you could just pipe in legendary's dry run output and not have to deal with manually copy/pasting it each time.

rizzini commented 2 years ago

FYI, I fiddled around with legendary a bit and you can get an auth code much easier than via your browser.

legendary launch --dry-run 9c203b6ed35846e8a4a9ff1e314f6593 2> >(grep AUTH_PASSWORD) | sed -ne 's/^.*-AUTH_PASSWORD=\([a-z0-9]*\).*$/\1/p'

The next step would be to have min-ed-launcher accept input from STDIN and then you could just pipe in legendary's dry run output and not have to deal with manually copy/pasting it each time.

Wonderful. Worked like a charm.