Skip to content
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

Allow certain protonfixes to be run during first time setup #109

Open
ProjectSynchro opened this issue Aug 27, 2024 · 6 comments
Open

Allow certain protonfixes to be run during first time setup #109

ProjectSynchro opened this issue Aug 27, 2024 · 6 comments
Labels
enhancement New feature or request

Comments

@ProjectSynchro
Copy link
Contributor

Is your feature request related to a problem? Please describe.
I was looking into getting Fable 3 working and I ran into a bit of an annoying issue. GFWL is involved so there is already a headache there, but it seems like the gfwl installer that is shipped with the game causes the first launch process to run indefinitely.

Describe the solution you'd like
A function in utils.py (or similar) that would allow for certain fixes to be run during the setup process.

For example you could use this theoretical solution to delete the bad redistributable package from the game directory, which would cause the steam install scripts to skip the bad installer. This could allow broken games (Like Fable) to run without user intervention.

@Root-Core
Copy link
Contributor

You should be able to delete the file in the gamefix using Python's built-in functions.

The problem is that the install script runs before the protonfixes.
I don't know if there's really anything we can do about this... may be a Steam issue.

@ProjectSynchro
Copy link
Contributor Author

ProjectSynchro commented Aug 27, 2024

According to this function:

umu-protonfixes/fix.py

Lines 196 to 211 in ad6a519

def main() -> None:
""" Runs the gamefix
"""
check_args = [
'iscriptevaluator.exe' in sys.argv[2],
'getcompatpath' in sys.argv[1],
'getnativepath' in sys.argv[1],
]
if any(check_args):
log.debug(str(sys.argv))
log.debug('Not running protonfixes for setup runs')
return
log.info('Running protonfixes')
run_fix(get_game_id())

It seems like protonfixes are explicitly skipped during first time setup runs. Perhaps another check could be run first (searching for some kind of on_setup function) that would run a fix like deleting the bad redistributable and only run once.

I can open a PR when I get the chance, I was just curious what others thought beforehand.

@Root-Core
Copy link
Contributor

I added some logging and protonfixes is only run once, after the setup. I tested it with Bully: Scholarship Edition, which installs DXSETUP.exe and vcredist_x86.exe as I don't own a game with GFWL currently.

@ProjectSynchro
Copy link
Contributor Author

I see, this would probably need to be something that gets implemented in Proton (probably not cleanly).

Oh well, it was worth asking about.

@ProjectSynchro ProjectSynchro closed this as not planned Won't fix, can't repro, duplicate, stale Aug 27, 2024
@Root-Core
Copy link
Contributor

We might be able to actually add such a functionality to Proton..

It seems that Proton already overrides some files like dotnetfx35setup.exe.

https://github.com/GloriousEggroll/proton-ge-custom/blob/d4896121718a8751d04511d6f2eaf0663931e729/proton#L1324

You could try testing that with WINEDLLOVERRIDES="gfwlivesetup.exe=b" %command%" .. not sure if we would need some kind of "noop.exe" to be run, though. This could be upstreamed, if we have a solution.

@R1kaB3rN R1kaB3rN reopened this Oct 15, 2024
@R1kaB3rN R1kaB3rN added the enhancement New feature or request label Oct 15, 2024
@ProjectSynchro
Copy link
Contributor Author

We might be able to actually add such a functionality to Proton..

It seems that Proton already overrides some files like dotnetfx35setup.exe.

https://github.com/GloriousEggroll/proton-ge-custom/blob/d4896121718a8751d04511d6f2eaf0663931e729/proton#L1324

You could try testing that with WINEDLLOVERRIDES="gfwlivesetup.exe=b" %command%" .. not sure if we would need some kind of "noop.exe" to be run, though. This could be upstreamed, if we have a solution.

I tried that with Fable 3 to no avail. Seems to me that the setup script is invoking the executable directly in some way.

I think it's worth it to try a shim executable installed to the path somewhere to see if that changes anything. I'll have to try that to see if it's a viable solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

8 participants
@ProjectSynchro @Root-Core @R1kaB3rN and others