How to manually-manually detect installed steam games?
TLDR; create or modify your current game's appmanifest file (in your case appmanifest_356190.acf) in your Steam\steamapps folder, and adjust the following values:
-
StateFlags
to1026
, -
LastUpdated
to0
, -
UpdateResult
to4
, -
SizeOnDisk
to0
, -
buildid
to0
, -
LastOwner
to<identical value>
, -
BytesToDownload
to0
, and -
BytesDownloaded
to0
. - Remove the values from the
InstalledDepots
andMountedDepots
section.
This worked for me after testing out a similar scenario. I'm not sure what values are strictly necessary to change.
Below is the route I took to arrive to this conclusion.
I simulated your problem.
On one of my disks I had little space left, so I started downloading a game that was at least half that size, paused it after a few seconds, and quit Steam.
I checked to see what files were modified/created based on the game's Steam ID, and found (unsurprisingly) the appmanifest_.acf file (in the Steam\steamapps folder), which contains integers that tell Steam what game has what status and can be found where (the same file user l3l_aze refers to in their answer).
Nothing revolutionary.
I then tried a few scenarios:
I (copy-pasted and) deleted that .acf file, to see how Steam would react, and to duplicate your situation. I opened up Steam again, but it (logically) didn't recognize the game having been partially downloaded.
Starting the download again (by clicking 'Install' in the Steam Library) I got the same "You do not have enough disk space" warning (it would actually have continued where it had left off, recognizing the files in the download folder, when I tried it with a smaller game).
I quit Steam again, grabbed an .acf file of a game I knew had successfully finished, and renamed it to appmanifest_.acf to correspond with the game I was trying to install (so '356190' in the case of Middle Earth: Shadow of War). I removed the values for
LastUpdated
,SizeOnDisk
andBytesToDownload
, and restarted Steam.
I could click the 'Update' button to continue the download, but it simply wouldn't download anything.Then I tried to "Verify the integrity of the game files", but it didn't work. This process probably needs info from the appmanifest as well.
I deleted the value of
BytesToDownload
again, looked up the size of the game in the download folder, and pasted both in the right places (without the commas). It did show the new size, but still no dice - the download was stuck at 0%.The "Clear download cache" after renaming the download folder (to keep the files it had already downloaded) didn't help.
Just emptying the appmanifest file doesn't work: I figured the appmanifest might repopulate itself with the right values, but it doesn't.
I then started downloading another file, pausing it, and copying the values in that game's appmanifest to our game's appmanifest (the following values were changed:
StateFlags
to1026
(flagging it as 'Update required but already started'1),LastUpdated
to0
,UpdateResult
to4
,SizeOnDisk
to0
,buildid
to0
,LastOwner
to<identical value>
,BytesToDownload
to0
, andBytesDownloaded
to0
. I also removed the values from theInstalledDepots
andMountedDepots
section, and kept the two identical integers,228980
in theSharedDepots
section (this is likely the code for a DirectX or Visual Basic redistributable2, so probably not important for this purpose).
This did the trick: after restarting Steam the game continued downloading whence it left off.
(This could be slightly dependent on what games you copy values from and to, though.)
1. https://www.reddit.com/r/Steam/comments/4x3il8/deployments_and_steam/
2. https://crosscode.gamepedia.com/Steam_depots
Steam does not seem to actually keep a list of what's installed, although that is stored in part of the configuration data. Instead it loads the appmanifest_#.acf files from all of the Steam Library Folders that it knows about on startup (the default + any that are in the libraryfolders.vdf file in the default steamapps folder). Each of these includes a name, the game's state (installed & playable, needs update, etc), and some more specific to that game.
These appmanifest files are a part of Steam's configuration data, and when Steam is not properly shut down including from crashing it can corrupt/destroy parts of the config data including entire files.
It has been possible in the past to create a partial appmanifest & have Steam fill in the blanks, but this may not work any more; I haven't tried in a long time and IDK if anyone else has. If you would like to try it will require copying the game to your separate drive, or at least moving the existing data out of the steamapps folder you'll be using, because this is an experimental technique and can destroy existing installation data.
Here is a method I posted in a Reddit comment around a year ago, with a slight edit (changing BytesToDownload to 0):
Move the game install data out of the steamapps folder if you haven't already, such as to your desktop.
Then in Steam right click the game and "Delete Local Content" to make sure there's nothing left of it in that location, and then start the installation and pause it ASAP.
Now go into the Steam\steamapps folder where you started the download and grab the appmanifest file. Make sure it has the value of "BytesToDownload" set to something other than 0 though; otherwise it's useless. Copy the manifest out, and then in Steam right click->Delete Local Content for the app.
Move or copy the appmanifest file into the steamapps folder of the Steam Library Folder where you do want the game installed, and move or copy the game install data into the steamapps\common folder of it.
Open the appmanifest file in a text editor and copy the value from "BytesToDownload" and paste it into the value of "BytesDownloaded" (value goes between the double quotation marks, e.g. "value"), and set "BytesToDownload" to 0, and ensure that the StateFlags value is set to 1026, and then save the file.
Back in Steam start the install again, but this time make sure it's pointing to the Steam Library Folder where you have moved the game install data & the manifest to before you let it "start the download". It should quickly change to "Discovering Existing Files", meaning it's verifying the game install data.
Note: You may need to close the client between deleting the appmanifest after starting the new download & putting it into it's place.
I would test, but I'm waiting for Steam Support to get back to me about an issue that was crashing my computer which seemed to be caused by the Steam client, and will not launch it again until I get reassurance that it's been fixed or was not the issue. Currently day 2, not including the report I made to the beta discussions which was ignored.
Edit: NVM, it was just my machine dying apparently. Good times =<
Another edit: Leaving BytesToDownload alone may actually help make this work if it does not work when changing that value. Just an afterthought, still haven't been able to test.