7

For each Steam game, you can change your update settings (right click game > properties) to one of three options: automatically update (default), automatically update (high priority), and only update when you launch your game.

picture of setting in steam

My internet download limit is very low, and hence I do not want my games to update unless absolutely necessary (I usually leave updates till I'm using free WiFi). This is why I have all my games set to the second option (Only update this game when I launch it).

However, every time the Steam client updates, it resets all my settings to the first option, automatic updates. If I don't stop them in time, they cost me money in excess download fees.

Is there a way I can stop Steam from resetting my preferences? Alternatively, is there an easy way that I can change all my settings at once?


Note that this is not a dupe of Is there any way to stop Steam downloading updates?. That question is about stopping Steam updating (which I know how to do), whereas my question is about Steam resetting my preferences.

7
  • 1
    Try deleting the Userdata Folder in the Steam Folder.
    – Baumi
    Commented Apr 12, 2016 at 8:28
  • @Baumi Wouldn't that reset my user data? I want to keep my user data between updates, not reset it. Commented Apr 12, 2016 at 8:29
  • Yes i know that but i want to know if other options (Startparameters etc.) also get reseted or just your download options?
    – Baumi
    Commented Apr 12, 2016 at 8:37
  • @Baumi not that I know of (for instance, my skin stays the same). This seems to be the only thing that changes. Commented Apr 12, 2016 at 8:43
  • No need to. I will delete the comment. There could be an other Solution for you, instead of setting download options for every game just set the Limit auto-updating shedule. This would be in the general Steam Settings in Downloads -> Download Restrictions, just set the times from 0:00 to 0:00 this would prevent the auto-downloads. This will be a good workaround. I will try finding the problem why your steam resets the settings after update
    – Baumi
    Commented Apr 12, 2016 at 9:06

2 Answers 2

4

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.
1

I find it super annoying to put any requirements on my system like python.

If you're like me, just copy and paste this code into your powershell window.

Here is a script that worked for me, as a powershell administrator.

# Define the folder where you want to search for .acf files
$folderPath = "C:\Program Files (x86)\Steam\steamapps"

# Get a list of .acf files in the folder
$acfFiles = Get-ChildItem -Path $folderPath -Filter *.acf

# Define the pattern to match the line you want to change
$pattern = '^\s*"AutoUpdateBehavior"\s+"0"'

# Loop through each .acf file and make the necessary changes
foreach ($file in $acfFiles) {
    # Read the file contents
    $fileContent = Get-Content -Path $file.FullName

    # Iterate through each line in the file
    for ($i = 0; $i -lt $fileContent.Count; $i++) {
        if ($fileContent[$i] -match $pattern) {
            # Replace the line with the new value
            $fileContent[$i] = '    "AutoUpdateBehavior"        "1"'
        }
    }

    # Write the modified content back to the file
    $fileContent | Set-Content -Path $file.FullName
}

Write-Host "Lines updated in .acf files."

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .