diff --git a/default_pfx.py b/default_pfx.py index 7985cd8c..084ee794 100755 --- a/default_pfx.py +++ b/default_pfx.py @@ -70,6 +70,14 @@ def setup_dll_symlinks(default_pfx_dir, dist_dir): os.unlink(filename) make_relative_symlink(target, filename) +#steampipe can't handle filenames with colons, so we remove them here +#and restore them in the proton script +def fixup_drive_links(default_pfx_dir): + for walk_dir, dirs, files in os.walk(os.path.join(default_pfx_dir, "dosdevices")): + for dir_ in dirs: + if ":" in dir_: + os.remove(os.path.join(walk_dir, dir_)) + def make_default_pfx(default_pfx_dir, dist_dir, runtime): local_env = dict(os.environ) @@ -93,6 +101,7 @@ def make_default_pfx(default_pfx_dir, dist_dir, runtime): env=local_env, check=True) setup_dll_symlinks(default_pfx_dir, dist_dir) + fixup_drive_links(default_pfx_dir) if __name__ == '__main__': import sys diff --git a/proton b/proton index 0a02990b..b1c87981 100755 --- a/proton +++ b/proton @@ -405,6 +405,12 @@ class CompatData: if not os.path.exists(self.prefix_dir + "/user.reg"): self.copy_pfx() + if not os.path.lexists(self.prefix_dir + "/dosdevices/c:"): + os.symlink("../drive_c", self.prefix_dir + "/dosdevices/c:") + + if not os.path.lexists(self.prefix_dir + "/dosdevices/z:"): + os.symlink("/", self.prefix_dir + "/dosdevices/z:") + # collect configuration info if "STEAM_COMPAT_CLIENT_INSTALL_PATH" in os.environ: #modern steam client sets this