ananace / wf_proton_launcher

1 stars 1 forks source link

Issues and suggestions #1

Open GloriousEggroll opened 6 years ago

GloriousEggroll commented 6 years ago

Hey man, got around to messing with this thing, have a few suggestions!

  1. The warframe.exe has a proprietary cache/download system, so when updating, you really only want to update things on the index that -are not- in the Cache.Windows folder. Basically just enough to get warframe.exe to run. Then you want to update cache.windows from warframe.exe. This allows the game to update incrementally as it does in the official launcher. If you download everything with curl the game will try to fully re-download anything that changes, as opposed to just updating it incrementally. If you look at the recent changes in my script, I skip updating Launcher.exe (so it doesn't get replaced) and anything in the Cache.Windows folder.

  2. You can add a --firstrun option very easily! Use curl to download directx, run it via start command like you do warframe, with these options like this:

    directx_Jun2010_redist.exe /Q /T:C:\\dx9temp
    dx9temp/DXSETUP.exe /silent

    you can also make the launcher write the .reg file and run regedit silently to register it:

    regedit /S wf.reg

    wf.reg just needs to contain this:

    
    Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Wine\DllOverrides] "xaudio2_7"="native,builtin"


3. The wininet issue: You can make curl download the dlls from my repo, and you (or I) can make a wrapper exe just like I did with Launcher.exe that will run a shell script that handles replacing it

Lastly, something besides Retreiving index ... done. should tell the user "hey, downloads are starting dont worry nothing fucked up, we're still doing stuff in the background" because it kinda looks like it freezes there before it kicks off doing what it's supposed to.

Also, you don't need a redownload option, as warframe.exe does this on its own if it doesnt find what it's looking for. Additionally, content.warframe.com times out regularly over curl on large downloads, this is another reason I modified my script for warframe.exe to do all the heavy lifting.

I forked this and I'll see what I can do to help implement some of these things!
ananace commented 6 years ago

Thanks for the thoughts.

Nr.1 is a really simple change, though I've found it to be quicker to download the cache files through curl than letting Warframe do that itself. And I've yet to see a single download time out either, so I assume that'll be different depending on the CDN node. So maybe there should be another launch switch on that.

When it comes to numbers 2 and 3, I'd personally prefer to do them through native actions, but I guess letting the launcher do it wouldn't be a massive issue. I assume that the DirectX redist in /Drivers/DirectX9 lacks some of the pieces that a Wine install would need?

GloriousEggroll commented 6 years ago

@ananace it may be faster on curl when downloading the entire game, but it won't allow for incremental updates like the official warframe.exe handles. This was the big issue a lot of people came to me with when I had it set up this way. Especially those on potato-net

2 could alternatively be done with just the xact dlls as winetricks does with cabextract and regsvr. its more steps but would avert replacing extra wined3d directx dll files.

also - another really easy one - steam passes -registry:Steam as a launch option by default, you can just add an empty string like "" then add an option to detect it that replaces it with " -registry:Steam" then tack it on to all the warframe.exe launch lines. This would allow non-steam users to use it without fiddling with anything. ideally you could do the same thing for the language

3 you could get away with by targetting the windows path of proton in wine (z:\full\path\to\proton) and perform the entire thing in wine without launching a bash script (I didnt think of this in my first post). just make curl download the dlls then copy them over in wine via the launcher.

ananace commented 6 years ago

The commit I pushed limits files in Cache to only download if they're missing, if the files exist then they'll be kept as is, and left to Warframe itself to manage.

If you don't mind I'm going to split this into smaller issues though, having an epic like this makes it hard to write code for the particular pieces.

GloriousEggroll commented 6 years ago

that's perfect, I also thought about this for the various issues after making my initial post, i just kept coming across more and more things. it's a great start though for sure!

ananace commented 6 years ago

Split apart this issue into #2, #3, and #4

Please feel free to add some more if you have further thoughts.