-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use ShellExecute instead of CreateProcess to launch wine processes in the steam helper. #3239
Conversation
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Thanks, will take a look soon. Some games that are sensitive to how we start the process are Ultimate Doom (2280) and Doom II (2230). Those use BAT files with special characters. And ZACH-LIKE (1098840) which is actually a winconsole game (see d73b927). I think this one fails for other reasons, but at least opens a console now or something. Anyway, worth checking that those are all still working as they do now. |
I just tested those three games. Doom II and Ultimate Doom both work, but I wasn't able to get ZACH-LIKE working on either Proton 4.11-8 or my newer build. It seems to fail due to some unrelated dotnet error. |
I went to test this using the default build environment (vagrant) and was hitting:
nullptr was introduced in c++11 according to: This is resolved by adding -std=gnu++0x to the build flags. Although -std=c++11 also works, -std=gnu++0x covers a wider range of extensions per the stackoverflow article:
Can also confirm Ultimate Doom and Doom II Launched just fine. |
Thanks @GloriousEggroll. @Guy1524 this looks OK, but can you split it up into two commits? One to switch to using std::wstring and another to change to using ShellExecute. (Or just keep using the C API; either is fine). |
Sorry I didn't see your earlier message. @GloriousEggroll has reported an additional with this PR to me, and I'll split up the commits before investigating. |
See #3518 |
This more closely matches what windows steam does, and is needed due to games such as Star Wars Jedi: Fallen Order starting via a protocol handler, which CreateProcess doesn't know what to do with.
Note: I didn't test this with an official proton build, but rather proton-tkg, which uses a rewritten build system, so I'm not sure if using the C++ STL will work here.