wabbajack-tools/wabbajack

Wabbajack can't find Steam game if any Steam libraries are missing

Frogperson opened this issue · 4 comments

Describe the bug

Wabbajack is failing to find my "SkyrimSpecialEdition" game if any of my external Steam Libraries are missing, even though the library with Skyrim is available.

Additional Context

I have multiple steam libraries on hot-swappable drives. Steam fully supports this behavior, as evident by the fact that my games instantly appear and disappear when I insert and eject the drive. However, unless I have all of them inserted at the same time, Wabbajack errors out and fails to check any other libraries for my game.

Wabbajack Version

3.5.0.1

Logs

00:00:00.000 [ERROR] (Wabbajack.Downloaders.GameFile.GameLocator) While finding games installed with Steam|System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Games\Hogwarts Legacy\steamapps'.
   at System.IO.Enumeration.FileSystemEnumerator`1.CreateDirectoryHandle(String path, Boolean ignoreNotFound)
   at System.IO.Enumeration.FileSystemEnumerator`1.Init()
   at System.IO.Enumeration.FileSystemEnumerator`1..ctor(String directory, Boolean isNormalized, EnumerationOptions options)
   at System.IO.Enumeration.FileSystemEnumerator`1..ctor(String directory, EnumerationOptions options)
   at NexusMods.Paths.FilesEnumerator..ctor(String directory, String pattern, EnumerationOptions options, IOSInformation os)
   at NexusMods.Paths.FileSystem.InternalEnumerateFiles(AbsolutePath directory, String pattern, Boolean recursive)+MoveNext()
   at GameFinder.StoreHandlers.Steam.SteamHandler.FindAllGames()+MoveNext()
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at GameFinder.Common.Extensions.SplitResults[TGame](IEnumerable`1 results)
   at GameFinder.Common.AHandler`2.FindAllGamesById(ErrorMessage[]& errors)
   at Wabbajack.Downloaders.GameFile.GameLocator.FindStoreGames[TGame,TId](AHandler`2 handler, Dictionary`2 paths, Func`2 getPath) in C:\oss\wabbajack\Wabbajack.Downloaders.GameFile\GameLocator.cs:line 117
   at Wabbajack.Downloaders.GameFile.GameLocator.FindAllGames() in C:\oss\wabbajack\Wabbajack.Downloaders.GameFile\GameLocator.cs:line 65
00:00:59.431 [ERROR] (Wabbajack.InstallerVM) Can't find game SkyrimSpecialEdition|System.Exception: Can't find game SkyrimSpecialEdition
   at Wabbajack.Downloaders.GameFile.GameLocator.GameLocation(Game game) in C:\oss\wabbajack\Wabbajack.Downloaders.GameFile\GameLocator.cs:line 149
   at Wabbajack.InstallerVM.<BeginInstall>b__134_0() in C:\oss\wabbajack\Wabbajack.App.Wpf\View Models\Installers\InstallerVM.cs:line 506

Steam thinks you have a library in 'C:\Games\Hogwarts Legacy\steamapps' when it cant find it - the gamefinder aborts looking.

you will need to fix your library.

Yes, that's the exact issue! I have an external drive mounted to that location. If I don't have that drive plugged in, the location no longer exists, and Wabbajack stops looking for any other Steam games.
Since I have multiple drives like this, it's a bit annoying to have to plug them all in just so Wabbajack can detect a game that was already available

I think a solution for this is to simply have it keep checking even if a library is missing, rather than completely aborting.

As you can see here https://www.youtube.com/watch?v=e3HnDR7A8yE&t=287s (4:47 if timestamp doesn't link properly) dynamically removable libraries are an officially supported feature of Steam.

This isnt something we can do - Gamefinder is a 3rd party tool

Oh, my apologies, I wasn't aware. I guess I'll report this issue to them instead!