I finally got to experience it myself so I could gather more intel
I’ll write as much as I can sorry if it’s a lot of text, I believe in these kind of bugs anything can be a lead.
So OW does not start the App when the LoL launcher starts so the app doesn’t automatically start.
It neither detects the launcher after if I manually start the app.
The following had no effect on the above:
- Restarting the LoL client
- Restarting OW
- Closing both OW, and LoL, then starting OW then starting LoL
- Logging in on OW on whitelisted account
- Running an unpacked version of the app
Since I could reproduce it on an unpacked version of the app, I could debug however I wanted, these are the results:
The call overwolf.games.launchers.getRunningLaunchersInfo
returns:
{"success":true,"launchers":[]}
This event doesn’t get triggered no matter how many times I restart LoL client:
overwolf.games.launchers.onLaunched
The calls overwolf.games.launchers.events.setRequiredFeatures
and overwolf.games.launchers.events.getInfo
both return (over and over when recalling each 2 seconds):
{"success":false,"status":"error","reason":"Launcher isn't running or the associated game isn't running"}
If I remove from the manifest:
"game_targeting": { "type": "dedicated", "game_ids": [ 10902 ] },
"game_events": [ 10902 ],
While keeping:
"launch_events": [ { "event": "GameLaunch", "event_data": { "game_ids": [ 10902 ] }, "start_minimized": false } ],
Then the latter functions return:
{"success":false,"status":"error","reason":"launcher doesn't appear in the app's manifest"}
(As expected)
The following C# code finds the lockfile looking for the LoL process, sends a request to LCU and gets the currently logged in region as expected:
var ps = Process.GetProcesses();
var lol = ps.Where(x => x.ProcessName == "LeagueClientUx").First();
var lockfile = Path.Combine(Path.GetDirectoryName(lol.MainModule.FileName), "lockfile");
using var fs = new FileStream(lockfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using var sr = new StreamReader(fs, Encoding.Default);
var spl = sr.ReadToEnd().Split(':');
var (port, pass) = (spl[2], spl[3]);
var cmd = "lol-platform-config/v1/namespaces/LoginDataPacket/platformId";
var c = new RestClient
{
Authenticator = new HttpBasicAuthenticator("riot", pass),
BaseUrl = new Uri($"https://127.0.0.1:{port}/{cmd}"),
RemoteCertificateValidationCallback = new RemoteCertificateValidationCallback((object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => true)
};
var req = new RestRequest();
var res = c.Get(req);
if (res.StatusCode != System.Net.HttpStatusCode.OK) { }
var region = res.Content;
This worked while overwolf.games.launchers.getRunningLaunchersInfo
is still returning {"success":true,"launchers":[]}
So apparently OW doesn’t detect LoL at all for my app even though the manifest has:
"game_targeting": { "type": "dedicated", "game_ids": [ 10902 ] },
"game_events": [ 10902 ],
"launch_events": [ { "event": "GameLaunch", "event_data": { "game_ids": [ 10902 ] }, "start_minimized": false } ],
All users have reported that installing the porofessor.gg app will make it start working again (even after uninstalling the porofessor.gg app).
All affected users also report that it worked in the beginning, and stopped working after a while.
It never happened to me as long as I had other OW apps installed, but doing a clean installation of OW installing ONLY my app via the installer (can’t do via app store because it’s hidden), it eventually (after 2 days) stopped working.
I will wait and not install the porofessor.gg app in case there is more debugging we want to do.
Windows update also reports there are no more updates available.
It would be very easy for me to just use the C# in a dll instead of using the OW wrappers. I also don’t mind doing this in the meantime, at least as a fallback option if the wrappers don’t work. Should I?
My understanding: It works at start even when installed alone, so the manifest is probably correct, then it stops working if no other OW apps are installed. So it’s as if OW takes from all the installed apps a list of all games and launchers which it needs to scan for, but for some reason, after a few days it doesn’t read my app’s manifest. By installing other LoL apps, it now realizes it needs to scan for the LoL launcher, and then my app also works.
I hope this helps!