Windows: SteamCMD overwrites the desktop Steam client's library list (libraryfolders.vdf) — Windows counterpart of #2419

Offen
#2,591 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
backend, desktop

Rechercherichtung

Read the Windows SteamCMD launch path and compare it with the Linux isolation changes in #2421. Reproduce the report with the desktop Steam client running, then trace why the logged-in SteamCMD session writes to the client’s library configuration. Done means a Windows SteamCMD run no longer changes either desktop libraryfolders.vdf file, with regression coverage for the reported scenario.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bugs 🪲
Release Type

Compiled (Windows x86-64)

Version

1.17.3

Operating System

Windows 11

Relevant logs

No response

Describe the bug
Summary

On Windows, a SteamCMD download started from RimSort while the Steam client is running makes Steam forget every library folder except its default one. After Steam restarts, every game on other drives shows as not installed until each drive is re-added under Steam → Settings → Storage.

No game files are deleted, but it looks exactly like your games were wiped. Games on the forgotten drives stop updating, and clicking Install on one starts a second full download into the default folder.

This is the same failure as #2419, but on Windows. The fix in #2421 isolated SteamCMD's HOME/XDG_* directories on Linux only, so Windows is still affected in 1.17.3.

Environment
  • RimSort 1.17.3 (Windows build), instance Default
  • Windows 11 Pro (build 26300)
  • Steam client running at the time (client version 1792618285), with 7 library folders across several drives
  • RimSort-managed SteamCMD at %LOCALAPPDATA%\RimSort\instances\Default\steamcmd (SteamCMD client version 1792617903)
  • Steam client integration enabled
Steps to reproduce
  1. Have the Steam client running with two or more library folders.
  2. In RimSort, download a mod with SteamCMD. Here it was a single mod, 2102143149.
  3. Restart Steam.
  4. Steam → Settings → Storage now lists only the default library, and games on other drives show as not installed.
What the logs show (local time)

RimSort's log for the SteamCMD run:

[2026-10-24 01:22:31] [wrapper][clear_depot_cache] Attempting steamCMD depot cache clear
[SteamCMD] force_install_dir "C:\Users\<user>\AppData\Local\RimSort\instances\Default\steam"
[SteamCMD] Connecting anonymously to Steam Public...
[SteamCMD] workshop_download_item 294100 2102143149 validate
[SteamCMD] Success. Downloaded item 2102143149 ... (22510011 bytes)
[SteamCMD] quit

The desktop Steam client's own log, C:\Program Files (x86)\Steam\logs\content_log.txt, during that same run:

[2026-10-24 01:22:41] Loaded 0 apps from install folder "c:\users\<user>\appdata\local\rimsort\instances\default\steam\steamapps\appmanifest_*.acf".
[2026-10-24 01:22:41] Triggered async write of Steam library folders configuration (1 libraries).

On the next Steam start:

[2026-10-24 01:29:51] Loaded Steam library folders configuration: C:\Program Files (x86)\Steam\steamapps\libraryfolders.vdf
[2026-10-24 01:29:51] Loaded 1 apps from install folder "C:\Program Files (x86)\Steam\steamapps\appmanifest_*.acf".
[2026-10-24 01:29:51] Triggered async write of Steam library folders configuration (1 libraries).

Before the SteamCMD run, the same log shows 6 libraries.

Other traces of that SteamCMD session landed in the desktop client's logs folder too:

  • connection_log.txt: SteamCMD's anonymous logon ([a:1:…]), from 01:22:41 to 01:22:51.
  • configstore_log.txt: reads and writes of the desktop client's config\config.vdf, plus userdata\anonymous\config\localconfig.vdf.
  • A new compat_log.txt, created at 01:22:41.

SteamCMD's own logs folder (instances\Default\steamcmd\logs) has console_log, bootstrap_log, appinfo_log and configstore_log for the run, but no content_log. Its library and content activity went into the desktop client's folder.

Earlier SteamCMD launches during setup, which only self-updated and never logged in, did not cause this. Only the logged-in download session did.

Possible cause (my reading of the logs, not confirmed)

compat_log.txt in the desktop Steam folder reports Client version: 1792618285, which is the desktop client's version, not SteamCMD's (1792617903). That suggests that on Windows, SteamCMD attached to or loaded the installed Steam client while it was running. It then used the desktop client's install folder as its base, mounted force_install_dir as the only library, and saved a one-library libraryfolders.vdf over the desktop file.

If that's right, the Linux HOME isolation from #2421 has no Windows equivalent, because SteamCMD on Windows doesn't use HOME.

Expected behaviour

A RimSort SteamCMD run never changes the desktop Steam client's files or its library list.

Suggested fixes
  1. Off switch (simplest). Add a per-instance download method: Steam client only (Steamworks) / SteamCMD / Ask. With Steam client only, hide the "Download with SteamCMD" / "Re-download with SteamCMD" actions and route downloads through Steamworks subscriptions, which RimSort already supports through Steam client integration.
  2. Prefer Steamworks while Steam is running. If steam.exe is running and client integration is enabled, default to subscribing via Steamworks. Use SteamCMD only when Steam isn't running, or when the user explicitly confirms, with a warning that Steam may lose its library list.
  3. Safety net on every platform. Before launching SteamCMD, copy both desktop library files (Steam\config\libraryfolders.vdf and Steam\steamapps\libraryfolders.vdf) and record their hashes. After SteamCMD exits, compare them. If they changed, warn the user and offer to restore the saved copies, with Steam closed so it can't rewrite them. This would also catch any future regression of #2419, and pairs with the regression tests added in #2421.
  4. Root cause (Windows). Find out why SteamCMD binds to the running desktop client on Windows, and launch it isolated from that client.
Workaround for anyone else hitting this

Quit Steam before using any SteamCMD download in RimSort. If it already happened, open Steam → Settings → Storage and add each drive back. Steam picks up the existing games immediately.

Additional context

No response

Code of Conduct

I agree to follow this project's Code of Conduct

Duplicate Issue Check

I've checked for similar issues and didn't find anything

Wiki/FAQ Check

I've checked the Wiki for a solution and didn't find a solution

Vorherrschende Sprache
Python
Sterne
1.2k
Forks
155
Ø Merge
17 Std. 30 Min.
Gemergte PRs (30 T.)
68

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus RimSort/RimSort

Alle Issues in RimSort/RimSort

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.