How can I get some games to install via Steam under Wine?

Most of my Steam library installs and runs just fine under Wine. However, some new titles (so far Borderlands 2 and XCOM: Enemy Unknown) will not install. The initial download completes successfully, but on first launch a progress dialog box appears with the text: Completing installation ... 1%

Then, on the console, the following appears over the next approximately 30 seconds:

fixme:volume:GetVolumePathNameW (L"C:\\windows", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\userdata", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\system32", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\config", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\system32", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\Backups", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\system32", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\bin", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\system32", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\logs", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\system32", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\dumps", 0xdefeb20, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\system32\\mui", 0xdefeb1c, 520), stub!
fixme:volume:GetVolumePathNameW (L"C:\\windows\\Fonts", 0xdefeb1c, 520), stub!
fixme:volume:GetVolumePathNameW (L"Z:\\home\\user\\games\\Windows\\Steam\\Config", 0xdefeb20, 520), stub!" 

Finally, an error dialog appears with the text:

The Steam servers are too busy to handle your request for [Game name]. Error Code (2)
http://support.steampowered.com

My wine version is 1.5.8. I have tried running with a clean WINEPREFIX, and I have tried manually running the DirectX and VCRedist installers in the game directories in the steamapps directory. Can anyone offer insight into how I can resolve this issue? Thanks!


Solution 1:

I found that the "servers are too busy" message was thrown basically any time an error prevented the game (Borderlands 2 in my case) from launching. It was certainly not in any way related to the Steam servers, and pretty unfortunate that it so misleadingly masks some specific problem with the system.

After much trial and error, based on clues on the Wine AppDB reports and such, I was able to get it running by installing various dependencies and stuff. Unfortunately, I failed to properly document my adventure, but here are a few things I did that you might want to try:

  • With winetricks or directly with wine, install: vcredist vcrun2008 vcrun2010 msxml3 winhttp physx
  • With your native package manager, install: lib32-mpg123 gpgme libassuan
  • Make sure DirectX is installed in the wine environment
  • Launch the game by running wine Borderlands2.exe from command line (no symlinks!)

For better performance, I also ended up creating a swapfile, and tweaking the wine registry to recognize all 2GB of my video card's RAM -- it defaulted to only addressing up to 128MB or something crazy like that.

Hope this helps! Good luck.

Solution 2:

Okay, I've been working on this full-time for nearly a week and finally had a breakthrough. The Problem:

Many of my Steam games began failing to load. I.E.: Bioshock Infinite Just Cause 2 Deadpool Borderlands: The Pre-Sequel Saints Row IV and probably more I haven't tried yet.

Most of them were giving me the error in the title.

I tried all of the following to cure the problem...

I verified that my edge firewall wasn't blocking traffic. Verified that PC is plugged into the wall. Disabled windows firewall & windows defender and my Malwarebytes Premium virus protection. Turned off Steam Overlay. Disabled Steam Cloud Sync. Killed any programs that may produce OSD stuff, like FPS counters in Afterburner or EVGA Precision XOC. Verified cache files. Uninstalled and re-installed problematic games First, tried executing steam://flushconfig, reboot, run steam from the steam folder. Exited steam and deleted clientregistry.blob and restarted steam. Manually installed the vcredist, dotnet, and DirectX installers from game sub-directories. Ran msconfig and rebooted in diagnostic startup and tried game. Moved steam to C:\Program Files (x86)\, and other folders on other drives. Installed latest geforce drivers Installed all latest windows updates re-ran directx 11 install Uninstalled game and restarted windows into safemode w/networking and tried re-installing it in safemode. Completely uninstalled steam, along with every steam game. Manually removing all valve/steam related registry entries. Re-installed steam & re-installed games Run steam with admin privileges. Create the proper steam_appid.txt files for each game. Creating softlinks to the Steam folder in each game's executable folder. And much, much more.

Nothing had any effect. Then I stumbled onto a page where a user named Wildstar had surmised that the error was being thrown because of some failures in the Steam CEG copy protection system that all of the failing games happen to use. It uses some algorithm to create encrypted executables that will only run under the user's account. So I played around with deleting all of the .exe and .dll files from a game and then letting a validation run restore the missing files in the hopes that it would produce correctly encrypted binaries. Didn't work.

Finally, I decided to do everything I could to restore my Steam setup to as default a state as possible. Once I performed the following procedure, every single one of my problematic games returned to normal operation, and in some cases, I had missing saved games suddenly reappear.

In its most recent arrangement, I had my Steam folder on my E: drive because there's not enough room on my boot SSD for the 600GB of games I own. I also had an app directory on my C: drive that I tried moving some games into to see if running from the boot drive would help. So I had an E:\Steam installation dir and a C:\Steam Library dir, both paths being registered in my Steam Library Folders list.

These are the steps for fixing the CEG issues...

  1. Exit Steam.

  2. Move the SteamApps and UserData folders from your current installation to some safe directory on the same drive you currently have them stored on. Moving these folders will be WAY faster than copying them, because all it really does is update each file's directory chain info without touching the actual contents of the files.

  3. Uninstall Steam using the Geek uninstaller. It will yank out any extra reg entries or junk files after the standard uninstall script ends.

  4. Reinstall Steam into your "C:\Program Files (x86)" and launch it. You will see all of your games greyed out and waiting to be installed.

  5. Pick any game you like at random and begin the install process. It will ask you where you want to install it.

  6. If you plan to have all of your Steam games on your C: Drive, then choose your default install D/L location. If you plan to install some or all of your Steam games on another drive, then choose that drive. In my case, I created a new folder on my E: drive named it SteamLibrary, within which the new SteamApps folder resides.

  7. Once Steam is done allocating space and begins the actual download process, pause the download.

  8. Right click on the game you just began downloading and choose Uninstall. The only reason we did this is to have Steam setup the default folder structure for our apps.

  9. Exit Steam.

  10. Go to the SteamApps/Common folder Steam just created for your download and delete any files or folders that the uninstall you just performed may have missed.

  11. Move the UserData folder we preserved before into the "C:\Program Files (x86)\Steam" folder, overwriting any existing files.

  12. Move the contents of the SteamApps folder we preserved before into the SteamApps folder Steam just created when we began that first game download.

  13. Launch Steam.

  14. Every one of your games now needs to be re-installed, but the way we've set it up Steam will skip downloading any files that already exist. With games that were working fine before, you should be able to click the Install button, let it verify the existing files, run all of its pre-install scripts, and then run the game.

With the games that were throwing errors, I recommend finding the starting binaries in each game directory and then deleting them. Delete the main game .exe and any Launcher type .exe's as well, and then click Install. It will download the correctly customized/encrypted main executables you need to play the game, once it sees the old ones are missing.

Every game that was giving me problems came back from the dead after following these steps.

If you should happen to click install on a game that doesn't already have its files positioned in the place you specify, it will begin downloading them. After that point, it will do you no good to copy the game directory into your intended destination. Steam will not recognize the appearance of the new files. It will keep downloading into a temp folder until it's done and then copy over the files you just moved into place.

To correct this if it happens, you must pause the download and uninstall the game, copy the complete game directory into the desired folder, and then click Install again. If you see the "Discovering Existing Files" message, rather than the downloading progress bar, you have succeeded.