Coder Social home page Coder Social logo

z1ni / xgp-save-extractor Goto Github PK

View Code? Open in Web Editor NEW
486.0 11.0 30.0 118 KB

Python script to extract savefiles out of Xbox Game Pass for PC games

License: MIT License

Python 100.00%
python3 xbox-game-pass backup game-saves migration steam octopathtraveler just-cause-4 hades control

xgp-save-extractor's Introduction

XGP-save-extractor

Python script to extract/backup savefiles out of Xbox Game Pass for PC games.

When run, the script produces a ZIP file for each supported game save found in the system.

In most cases the files in the ZIP can be copied to the save directory of the Steam/Epic version of the game. To find out the save file location, check PCGamingWiki.

Important

If you want the script to support another game, please open an issue here.

Check the incompatible game list below and search the issues for a duplicate before creating a new one.

Supported games

If you migrate a save to Steam/Epic version that's listed with ❔ below, please open an issue and confirm whether it worked, so the table can be updated.

Legend: ✅ Confirmed working, ❔ Unconfirmed, - Not available in the store

Game Tested w/ Steam Tested w/ Epic
A Plague Tale: Requiem
Arcade Paradise
Atomic Heart -
Celeste
Chained Echoes
Chorus
Control
Final Fantasy XV -
Forza Horizon 5 -
Fuga: Melodies of Steel 2
Hades
High on Life
Hi-Fi RUSH
Just Cause 4
Lies of P -
Like a Dragon Gaiden: The Man Who Erased His Name -
Like a Dragon: Ishin! -
Monster Train -
Ninja Gaiden Sigma -
Octopath Traveller
Palworld -
Persona 5 Royal -
Persona 5 Tactica -
Railway Empire 2
Remnant 2
Remnant: From the Ashes
Starfield -
State of Decay 2
Totally Accurate Battle Simulator -
Wo Long: Fallen Dynasty -
Yakuza 0 -
Yakuza: Like a Dragon -

Incompatible games

These games use different save formats than the Steam/Epic version that can't be easily converted.

Game Issue
Chivarly 2 #39
Death's Door #79
Forza Horizon 4 #71
Persona 3 Reload #114
Tinykin #28

Running

Important

If the save file extraction fails, wait for a bit and try again. The Xbox cloud save sync can take some time and produce invalid files while syncing is in progress.

Important

Some anti-virus/anti-malware software can flag the executable as malicious. The executable is produced with PyInstaller and contains the Python interpreter alongside with the same main.py script as in this repo.

Download the latest release for an one-file executable: https://github.com/Z1ni/XGP-save-extractor/releases

Or

Run main.py with Python 3.10+. The script produces ZIP files for each of the supported games that are installed for the current user.

Thanks

Thanks to @snoozbuster for figuring out the container format at goatfungus/NMSSaveEditor#306.

Also thanks to everyone that has contributed by adding support for new games.

xgp-save-extractor's People

Contributors

doct-holiday avatar revanmj avatar satouyuri avatar z1ni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xgp-save-extractor's Issues

Exe and python script open then close immediately upon running

Hi there,

I started with the exe and nothing happened. The terminal opened and then closed. No zip file of any saves. Nothing.

I removed all empty gamepass saves. Same thing.

Attempted running the script in python directly, same story. Nothing.

Please can you advise if I'm doing something wrong

Failed to create save game error and how I'm trying to "

I posted this to reddit as well but I think this is a better place to maybe get help. My goal here is just simply recover my last save file, which does still load fine and works without issue but i cannot save due to the error/bug, and then convert to steam friendly save file so I can stop using the Xbox Game Pass version and use the steam version instead.

REDDIT POST 1

Been fighting this after getting to lvl 17 last night. When i booted game today getting this error. Tried everything listed here. I decided the best course of action was the converter from xbox game pass to steam and I would just buy the game there HOWEVER when I try to run the python script i get an error. The strange part is if I revert this file
C:\Users*myusername*\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\containers.index
back to the default that I saved a backup of before playing (thanks bethesda, this is a trait your games created in me) it will run just the script fine not when using the file my game has created over the course of playing it. I cannot code nor do I have the patience to teach myself it to figure this issue out. Anyone got any ideas?
Here is the error
C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06>python main.py

Xbox Game Pass for PC savefile extractor

========================================

Installed supported games:

  • Starfield

Failed to extract saves:

Traceback (most recent call last):

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 255, in main

read_result = read_containers(supported_xgp_apps[name])

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 102, in read_containers

with open(os.path.join(container_path, f"container.{container_num}"), "rb") as cf:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\myusername\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\6A105BD4D7F54CFB819A80B6C046C7A5\container.2'
PLEASE NOTE - myusername is not my actual username just a placeholder. * are invalid for file names.

REDDIT POST REPLY 1

Tried recreating the folders it was looking for in the script with a container.2 file in each but we get to the end and now i am getting this error I cannot seem to solve.
C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06>python main.py

Xbox Game Pass for PC savefile extractor

========================================

Installed supported games:

  • Starfield

Failed to extract saves:

Traceback (most recent call last):

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 263, in main

save_paths = get_save_paths(store_pkg_name, containers, temp_dir)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 220, in get_save_paths

with open(part_path, "rb") as part_f:

^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\myusername\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\6A105BD4D7F54CFB819A80B6C046C7A5\600D23C8F23D4EBBA3D9DC95152DAE2C'

REDDIT POST REPLY 2

Created a copy of container.2 and renamed it to 600D23C8F23D4EBBA3D9DC95152DAE2C and then deleted the file extension. This actually worked to move to next file and got me past that error. I did the same to the next files it listed however ended up in a loop. Stuck back at as of right now.

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\myusername\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\6A105BD4D7F54CFB819A80B6C046C7A5\600D23C8F23D4EBBA3D9DC95152DAE2C

Possible to go the other way from steam save to xgp?

Not an issue but some folks (including myself) bought this on steam only to realize that it was included with game pass later and have some progress we want to import from steam. I dont know how easy this would be to implement or if its even possible to have this tool go the other way. So steam to xgp.

StarField - Multiple containers with saves

Hi,
Firstly, thank you for this tool - I think at the moment this will help quite a lot of people with some issues on how Starfield saves and I believe many more will be moving over to steam so they do not lose their progress within the game.

I also want to confirm that the tool has been able to create the SFS files from the WGS folder - BUT - I have another challenge :)

Two days ago, i received an error in game stating "Error: Cannot create save file" and upon exiting the game all of my saves where deleted. I then updated:

  • Xbox Identity app
  • Xbox app for PC
  • Windows

this allowed me to create a new game and then save, but none of my progress was synched to the cloud.

I came across your tool, and discovered the WGS folder. I also noticed that within the many folders inside WGS, some contained a file called container.1 and container.2.

After running the tool, I believe that it has only created .SFS files from the container.1 files - these SFS files also correlate to the same "new" saves i currently can see in my load menu.

The folders that have the container.2 file seem to be my historic saves that are missing within the game, and if there is a way for your extraction tool to create SFS files from those folders my progress might be saved!

Here is my WGS folder if you wanted to have a look at what I am referring too. you will see that the dates of the folders are from the 1st till the 3rd of september, which is when the game was working normally:
FR0573-wgs.zip

If there is a way to create the SFS from the historic files please let me know, perhaps there is some config tweaking required in the containers index file? I am not sure :(

Starfield extraction not working - Solution Included

I ran into problems trying to convert my Starfield saves. It seemed as though it was trying to find a folder for Hades (I no longer have it installed), couldn't, and halted the script there instead of moving on. Starfield never even got detected.

Full output:

Xbox Game Pass for PC savefile extractor
========================================
Installed supported games:
- Hades
Traceback (most recent call last):
  File "main.py", line 275, in <module>
    main()
  File "main.py", line 251, in main
    store_pkg_name, containers = read_containers(supported_xgp_apps[name])
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "main.py", line 50, in read_containers
    dirs = [d for d in os.listdir(wgs_dir) if d != "t"]
                       ^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\romks\\AppData\\Local\\Packages\\SupergiantGamesLLC.Hades_q53c1yqmx7pha\\SystemAppData\\wgs'
[21468] Failed to execute script 'main' due to unhandled exception!

I edited main.py so that it would only look for Starfield:

import os
import struct
import sys
import tempfile
import uuid
import zipfile
from datetime import datetime
from pathlib import Path, PurePath

# Xbox Game Pass for PC savefile extractor

# Running: Just run the script with Python 3 to create ZIP files that contain the save files

# Thanks to @snoozbuster for figuring out the container format at https://github.com/goatfungus/NMSSaveEditor/issues/306

# List of supported Game Pass games and their UWP package names
supported_xgp_apps = {
    "Starfield": "BethesdaSoftworks.ProjectGold_3275kfvn8vcwc"
}


def discover_games():
    found_games = []
    for game_name, pkg_name in supported_xgp_apps.items():
        pkg_path = os.path.expandvars(f"%LOCALAPPDATA%\\Packages\\{pkg_name}")
        if os.path.exists(pkg_path):
            found_games.append(game_name)
    return found_games


def read_utf16_str(f, str_len=None):
    if not str_len:
        str_len = struct.unpack("<i", f.read(4))[0]
    return f.read(str_len * 2).decode("utf-16").rstrip("\0")


def read_containers(pkg_name):
    # Find container dir
    wgs_dir = os.path.expandvars(f"%LOCALAPPDATA%\\Packages\\{pkg_name}\\SystemAppData\\wgs")
    # Get the correct user directory
    dirs = [d for d in os.listdir(wgs_dir) if d != "t"]
    dir_count = len(dirs)
    if dir_count != 1:
        raise Exception(f"Expected one user directory in wgs directory, found {dir_count}")

    containers_dir = os.path.join(wgs_dir, dirs[0])
    containers_idx_path = os.path.join(containers_dir, "containers.index")

    containers = []

    # Read the index file
    with open(containers_idx_path, "rb") as f:
        # Unknown
        f.read(4)

        container_count = struct.unpack("<i", f.read(4))[0]

        # Unknown
        f.read(4)

        store_pkg_name = read_utf16_str(f).split("!Game")[0].split("!Retail")[0].split("!AppChorusShipping")[0].split("!App")[0]

        # Unknown
        f.read(12)
        read_utf16_str(f)

        # Unknown
        f.read(8)

        for _ in range(container_count):
            # Container name
            container_name = read_utf16_str(f)
            # Duplicate of the file name
            read_utf16_str(f)
            # Unknown quoted hex number
            read_utf16_str(f)
            # Container number
            container_num = struct.unpack("B", f.read(1))[0]
            # Unknown
            f.read(4)
            # Read container (folder) GUID
            container_guid = uuid.UUID(bytes_le=f.read(16))
            # Unknown
            f.read(24)

            files = []

            # Read the container file in the container directory
            container_path = os.path.join(containers_dir, container_guid.hex.upper())
            with open(os.path.join(container_path, f"container.{container_num}"), "rb") as cf:
                # Unknown (always 04 00 00 00 ?)
                cf.read(4)
                # Number of files in this container
                file_count = struct.unpack("<i", cf.read(4))[0]
                for _ in range(file_count):
                    # File name, 0x80 (128) bytes UTF-16 = 64 characters
                    file_name = read_utf16_str(cf, 64)
                    # Read file GUID
                    file_guid = uuid.UUID(bytes_le=cf.read(16))
                    # Ignore the copy of the GUID
                    cf.read(16)

                    files.append({
                        "name": file_name,
                        # "guid": file_guid,
                        "path": os.path.join(container_path, file_guid.hex.upper())
                    })

            containers.append({
                "name": container_name,
                "number": container_num,
                # "guid": container_guid,
                "files": files
            })

    return (store_pkg_name, containers)


def get_save_paths(store_pkg_name, containers, temp_dir):
    save_meta = []

    if store_pkg_name in [supported_xgp_apps["Starfield"]]:
        # Starfield
        # The Steam version uses SFS ("Starfield save"?) files, whereas the Store version splits the SFS files into multiple files inside the containers.
        # One container is one save.
        # It seems that the "BETHESDAPFH" file is a header which is padded to the next 16 byte boundary with the string "padding\0", where \0 is NUL.
        # The other files ("PnP", where n is a number starting from 0) are then concatenated into the SFS file, also with padding.

        temp_folder = Path(temp_dir.name) / "Starfield"
        temp_folder.mkdir()

        pad_str = "padding\0" * 2

        for container in containers:
            path = PurePath(container["name"])
            # There can be other files than saves, e.g. files under "Settings/" path. Skip those.
            if path.parent.name != "Saves":
                continue
            # Strip out the parent folder name
            sfs_name = path.name
            # Arrange the files: header as index 0, P0P as 1, P1P as 2, etc.
            parts = {}
            for file in container["files"]:
                if file["name"] == "BETHESDAPFH":
                    parts[0] = file["path"]
                else:
                    idx = int(file["name"].strip("P")) + 1
                    parts[idx] = file["path"]
            # Construct the SFS file
            sfs_path = temp_folder / sfs_name
            with sfs_path.open("wb") as sfs_f:
                for idx, part_path in sorted(parts.items(), key=lambda t: t[0]):
                    with open(part_path, "rb") as part_f:
                        data = part_f.read()
                    size = sfs_f.write(data)
                    pad = 16 - (size % 16)
                    if pad != 16:
                        sfs_f.write(pad_str[:pad].encode("ascii"))

            save_meta.append((sfs_name, sfs_path))

    else:
        raise Exception("Unsupported XGP app \"%s\"" % store_pkg_name)

    return save_meta


def main():
    print("Xbox Game Pass for PC savefile extractor")
    print("========================================")

    # Create tempfile directory
    # Control save files need this, as we need to create files that do not exist in the XGP save data
    temp_dir = tempfile.TemporaryDirectory(ignore_cleanup_errors=True)

    # Discover supported games
    found_games = discover_games()

    if len(found_games) == 0:
        print("No supported games installed")
        sys.exit(1)

    print("Installed supported games:")
    for name in found_games:
        print("- %s" % name)

        store_pkg_name, containers = read_containers(supported_xgp_apps[name])

        # Get save file paths
        save_paths = get_save_paths(store_pkg_name, containers, temp_dir)
        print("  Save files:")
        for file_name, _ in save_paths:
            print(f"  - {file_name}")

        # Create a ZIP file
        formatted_game_name = name.replace(" ", "_").replace(":", "_").replace("'", "").lower()
        timestamp = datetime.now().strftime("%Y-%m-%d_%H_%M_%S")
        zip_name = "%s_%s.zip" % (formatted_game_name, timestamp)
        with zipfile.ZipFile(zip_name, "x") as save_zip:
            for file_name, file_path in save_paths:
                save_zip.write(file_path, arcname=file_name)

        print()
        print("  Save files written to \"%s\"" % zip_name)
        print()

    temp_dir.cleanup()


if __name__ == "__main__":
    main()

I am no2 happily playing again :]
Thank you so much @Z1ni !

Can't pull Saves From xbox Error.

Xbox Game Pass for PC savefile extractor

Traceback (most recent call last):
File "main.py", line 303, in
main()
File "main.py", line 256, in main
temp_dir = tempfile.TemporaryDirectory(ignore_cleanup_errors=True)
TypeError: init() got an unexpected keyword argument 'ignore_cleanup_errors'

Any help? I keep getting "Caution! You are low on space to save your progress." errors and I want to abandon Xbox.

Does it work on Steam deck?q

Is it the same setup if I wanna move a save from Xbox cloud stream to my Steam deck if I buy the game from Steam? If not, would it be possible to ask for a special Steam deck version of XGP-save-extractor. But might not work at all..

Request: support for Power Wash Simulator?

Not sure if you take them but would love if you could somehow please manage it! If you need any files or info on installation directories etc, let me know and I'll do my best to track it down.

Request: Tinykin

I put maybe about 10 hours into this game before they removed it from XGP and I really wish I could pick up where I left off on Steam. The XGP save data is mostly readable with a hex editor, but for some reason the Steam save data is a jumbled mess of characters.

If you could at least point me in the right direction as to how to convert the save data I'd be extremely grateful.

Tinykin Saves.zip

Starfield missing files issue

I have been checking out why I don't always get my Starfield saves when I use the script. After doing some deduction it seems that when you save in game it doesn't actually create the save file in the "...\SystemAppData\wgs..." but somewhere else (idk where). A folder for the save file will be created instantly in the "/wgs" directory without the actual save data. Then with some Xbox "magic" the save file/data, after some delay, is moved to the "/wgs" directory in the background. My best guess is that it has something to do with cloud backup. The save files transfers are done individually and has a couple minutes delay between each of them.

Basic fix: Wait 10 to 20 minutes (depending on how many saves are pending) then run the script again.

Should probably be a warning for the user when save data is missing that the data is still being (cloudified?) by Xbox and that the user should wait and try running the script again after a few minutes

Missing Container?

This is what I get when running the exe and main.py:

Xbox Game Pass for PC savefile extractor

Installed supported games:

  • Starfield

    !! Missing container "Saves/Autosave1_CD65C61F_437562616E6272656164_020225_20230918222206_27_0_4.sfs" !!
    Xbox cloud save syncing might not be complete, try again later.
    Extracted saves for this game might be corrupted!
    Press enter to skip and continue.

Failed to extract saves:

Xbox Game Pass for PC savefile extractor

Installed supported games:

  • Starfield
    Failed to extract saves:
    Traceback (most recent call last):
    File "main.py", line 371, in main
    File "main.py", line 335, in get_save_paths
    Exception: Unsupported XGP app "BethesdaSoftworks.ProjectGold_3275kfvn8vcwc!GAME"

Press enter to quit

Being flagged by Windows Defender as Trojan:Script/Phonzy.B!ml

Also, the xgp-save-extractor.exe gets turned into $RL73JC8.exe when being deleted and moved to Recycle Bin. Need an explanation please.

⚠️ NOTE: Some anti-virus/anti-malware software can flag the executable as malicious. The executable is produced with PyInstaller and contains the Python interpreter alongside with the same main.py script as in this repo.

I get that it may be flagged as malicious, but why is it being flagged as a Trojan specifically?

Screenshot 2023-09-23 235256
Screenshot 2023-09-23 213748

Support for Chivalry 2

Game name: Chivalry 2

TLDR; Good day! Can you please add support for the save transfer for this great game? PC XboxGP version -> Steam version.
Thanks for your time and effort!

I played Chivalry 2 quite a while on a PC XboxGamePass, and made some progress, which I want to save. But 99% of my games are on Steam, and I'm going to buy Chivalry 2 on Steam. Naturally, my progress will be lost. It will be extremely great, to be able to transfer the progress. And extremely sad, in case if it's not possible :D
So, thanks in advance, and best of luck!

Game package name: TripwireInteractiveLLC.Chivalry2_237dqjpew1r3m

wgs.zip

Request: Support Celeste

Played this on Xbox Live Gold/PGP. Did not finish it. Would love to continue playing the game on Epic.
Great tools btw.

Not working for starfield

Moving from the game pass edition to the steam edition, currently both editions are installed.

cloned the repo

ran in both normal and elevated command window, same error:

`H:>cd stuff

H:\stuff>cd XGP-save-extractor

H:\stuff\XGP-save-extractor>python main.py
Xbox Game Pass for PC savefile extractor

Installed supported games:

  • Starfield
    Traceback (most recent call last):
    File "H:\stuff\XGP-save-extractor\main.py", line 272, in
    main()
    File "H:\stuff\XGP-save-extractor\main.py", line 251, in main
    save_paths = get_save_paths(store_pkg_name, containers, temp_dir)
    File "H:\stuff\XGP-save-extractor\main.py", line 208, in get_save_paths
    idx = int(file["name"].strip("P")) + 1
    ValueError: invalid literal for int() with base 10: 'BlobData0'

H:\stuff\XGP-save-extractor>`

Starfield Failed to extract Saves

When I run the extractor it gives me this message

Installed supported games:

  • Starfield
    Failed to extract saves:
    Traceback (most recent call last):
    File "C:\MyScripts\XGP-save-extractor-main\main.py", line 263, in main
    save_paths = get_save_paths(store_pkg_name, containers, temp_dir)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\MyScripts\XGP-save-extractor-main\main.py", line 230, in get_save_paths
    raise Exception("Unsupported XGP app "%s"" % store_pkg_name)
    Exception: Unsupported XGP app "<<PROCESS_12240>>"

I have the xbox app and starfield is installed through it, so I have no idea why it says that

.exe not working.

Xbox Game Pass for PC savefile extractor

Installed supported games:

  • Starfield
    Traceback (most recent call last):
    File "main.py", line 275, in
    File "main.py", line 251, in main
    File "main.py", line 99, in read_containers
    FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\MYUSERNAME\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\0009000002294BA5_0000000000000000000000007BF72399\47F5CA8E093541149F44E7470EF3C1AA\container.1'
    [22004] Failed to execute script 'main' due to unhandled exception!

[process exited with code 1 (0x00000001)]
You can now close this terminal with Ctrl+D, or press Enter to restart.

Support for Middle Earth - Shadow of War

Middle Earth - Shadow of War:

Game package name: WarnerBros.Interactive.WB-Kraken_ktmk1xygcecda

I have found reddit post noting that it is possible to move saves (however link in the comment is dead ;) ): https://www.reddit.com/r/shadow_of_war/comments/k6hfy6/transfer_save_game_from_microsoft_store_to_steam/

Steam save to download from external source: https://gtrainers.com/load/categories/savegames/middle_earth_shadow_of_war_save_game_100_2_dlc/30-1-0-6348
wgs.zip

Failed to extract saves. Starfield

Hi I'm hoping someone could help me with an issue I'm having, trying to convert my files over to steam? This is the line of code I get whenever I try. thank you.

C:\Users\sam\Desktop\XGP-save-extractor-release-2023-09-06>python main.py
Xbox Game Pass for PC savefile extractor

Installed supported games:

  • Starfield
    Failed to extract saves:
    Traceback (most recent call last):
    File "C:\Users\sam\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 263, in main
    save_paths = get_save_paths(store_pkg_name, containers, temp_dir)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "C:\Users\sam\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 220, in get_save_paths
    with open(part_path, "rb") as part_f:
    ^^^^^^^^^^^^^^^^^^^^^
    FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\sam\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\000901F76DE1FCF6_0000000000000000000000007BF72399\9A89FFEF24E644CF8FEFD50376CC54BF\00000000000000000000000000000000'

lies of P

Can you make it work for lies of P?
Thanks.

Support for 'High on Life'?

Hi,

a support for High on Life would be dope.

I can support you with XBGP and Steam save games if required.

Support for Cities Skylines 2

Game name: Cities Skylines II

WGS file was sent by mail.

[Never mind, the save file has already synced by cloud as long as sign into the same paradox account]

Failed to create save game error and how I'm trying to "fix" it.

I posted this to reddit as well but I think this is a better place to maybe get help. My goal here is just simply recover my last save file, which does still load fine and works without issue but i cannot save due to the error/bug, and then convert to steam friendly save file so I can stop using the Xbox Game Pass version and use the steam version instead.

REDDIT POST 1

Been fighting this after getting to lvl 17 last night. When i booted game today getting this error. Tried everything listed here. I decided the best course of action was the converter from xbox game pass to steam and I would just buy the game there HOWEVER when I try to run the python script i get an error. The strange part is if I revert this file
C:\Users*myusername*\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\containers.index
back to the default that I saved a backup of before playing (thanks bethesda, this is a trait your games created in me) it will run just the script fine not when using the file my game has created over the course of playing it. I cannot code nor do I have the patience to teach myself it to figure this issue out. Anyone got any ideas?
Here is the error
C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06>python main.py

Xbox Game Pass for PC savefile extractor

========================================

Installed supported games:

  • Starfield

Failed to extract saves:

Traceback (most recent call last):

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 255, in main

read_result = read_containers(supported_xgp_apps[name])

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 102, in read_containers

with open(os.path.join(container_path, f"container.{container_num}"), "rb") as cf:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\myusername\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\6A105BD4D7F54CFB819A80B6C046C7A5\container.2'
PLEASE NOTE - myusername is not my actual username just a placeholder. * are invalid for file names.

REDDIT POST REPLY 1

Tried recreating the folders it was looking for in the script with a container.2 file in each but we get to the end and now i am getting this error I cannot seem to solve.
C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06>python main.py

Xbox Game Pass for PC savefile extractor

========================================

Installed supported games:

  • Starfield

Failed to extract saves:

Traceback (most recent call last):

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 263, in main

save_paths = get_save_paths(store_pkg_name, containers, temp_dir)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:\Users*myusername*\Desktop\XGP-save-extractor-release-2023-09-06\main.py", line 220, in get_save_paths

with open(part_path, "rb") as part_f:

^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\myusername\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\6A105BD4D7F54CFB819A80B6C046C7A5\600D23C8F23D4EBBA3D9DC95152DAE2C'

REDDIT POST REPLY 2

Created a copy of container.2 and renamed it to 600D23C8F23D4EBBA3D9DC95152DAE2C and then deleted the file extension. This actually worked to move to next file and got me past that error. I did the same to the next files it listed however ended up in a loop. Stuck back at as of right now.

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\myusername\AppData\Local\Packages\BethesdaSoftworks.ProjectGold_3275kfvn8vcwc\SystemAppData\wgs\00090000039FB06A_0000000000000000000000007BF72399\6A105BD4D7F54CFB819A80B6C046C7A5\600D23C8F23D4EBBA3D9DC95152DAE2C

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.