How do I stop Steam changing my update setting to automatic?

Solution 1:

As others said in comments, this may happen because of corrupted files. You can try deleting everything from Steam directory except steam.exe and steamapps dir. If problem still occurs after another Steam client update, you can use one of these methods. They don't answer your question, but solve your problem.

1. Limit auto-updating shedule

Steam -> Settings -> Downloads -> Download Restrictions

Here you can set Steam to update only at desired time. limit download

  • Pros: built it function
  • Cons: blocks only auto-updates (downloads update when game started), downloads updates for all games when disabled

2. Running Steam in Offline Mode

Steam -> Go Offline.../Go Online...

offline mode

  • Pros: can play games even when there are updates (Steam client doesn't know it yet since it runs offline)
  • Cons: can't use store, community, can't play multiplayer games

I wrote some automation script that helps switching mode with Steam closed.

3. Use some scripting

For this script you will need Python and vdf module. Just save it anywhere and run to set Only update this game when I launch it for each game.

#!/usr/bin/python
import vdf, platform, os, glob, codecs
try:
    import winreg
except ImportError:
    import _winreg as winreg
def find_default_steam_path():
    return {
        "Windows": lambda: winreg.QueryValueEx(
            winreg.CreateKey(winreg.HKEY_CURRENT_USER,r"Software\Valve\Steam"),
            "SteamPath"
        )[0],
        "Linux": lambda: os.path.expanduser("~/.local/share/Steam"),
        "Darwin": lambda: os.path.expanduser("~/Library/Application Support/Steam")
    }[platform.system()]()
def get_libraries(path):
    libraries = [path]
    ignored = ["TimeNextStatsReport", "ContentStatsID"]
    for k, v in vdf.parse(codecs.open(os.path.join(path, "steamapps", "libraryfolders.vdf"), 'r', 'utf8'))["LibraryFolders"].items():
        if k not in ignored:
            libraries.append(os.path.normpath(v))
    return libraries
def get_games_vdfs(libs):
    vdfs = []
    for lib in libs:
        vdfs += glob.glob(os.path.join(lib, "steamapps", "*.acf"))
    return vdfs
steam_path = os.path.normpath(find_default_steam_path())
libraries = get_libraries(steam_path)
games_vdfs = get_games_vdfs(libraries)
for g in games_vdfs:
    game_info = vdf.parse(codecs.open(g, 'r', 'utf8'))
    game_info["AppState"]["AutoUpdateBehavior"] = 1
    vdf.dump(game_info, codecs.open(g, 'w', 'utf8'))

This works similar to method one with two exceptions:

  1. When you use free internet you can manually select which games you want to update like you did before.
  2. You have to run it manually after Steam client update.