mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-01-13 23:28:16 +03:00
parent
c1fc8283d1
commit
1916502152
49
proton
49
proton
@ -16,11 +16,12 @@ import sys
|
|||||||
import tarfile
|
import tarfile
|
||||||
|
|
||||||
from filelock import FileLock
|
from filelock import FileLock
|
||||||
|
from random import randrange
|
||||||
|
|
||||||
#To enable debug logging, copy "user_settings.sample.py" to "user_settings.py"
|
#To enable debug logging, copy "user_settings.sample.py" to "user_settings.py"
|
||||||
#and edit it if needed.
|
#and edit it if needed.
|
||||||
|
|
||||||
CURRENT_PREFIX_VERSION="6.3-2"
|
CURRENT_PREFIX_VERSION="6.3-3"
|
||||||
|
|
||||||
PFX="Proton: "
|
PFX="Proton: "
|
||||||
ld_path_var = "LD_LIBRARY_PATH"
|
ld_path_var = "LD_LIBRARY_PATH"
|
||||||
@ -309,6 +310,52 @@ class CompatData:
|
|||||||
log("Unable to write new registry file to " + self.prefix_dir + "system.reg")
|
log("Unable to write new registry file to " + self.prefix_dir + "system.reg")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Prior to prefix version 6.3-3, ShellExecute* APIs used DDE.
|
||||||
|
# Wipe out old registry entries.
|
||||||
|
if int(old_proton_maj) < 6 or (int(old_proton_maj) == 6 and int(old_proton_min) < 3) or \
|
||||||
|
(int(old_proton_maj) == 6 and int(old_proton_min) == 3 and int(old_prefix_ver) < 3):
|
||||||
|
delete_keys = {
|
||||||
|
"[Software\\\\Classes\\\\htmlfile\\\\shell\\\\open\\\\ddeexec",
|
||||||
|
"[Software\\\\Classes\\\\pdffile\\\\shell\\\\open\\\\ddeexec",
|
||||||
|
"[Software\\\\Classes\\\\xmlfile\\\\shell\\\\open\\\\ddeexec",
|
||||||
|
"[Software\\\\Classes\\\\ftp\\\\shell\\\\open\\\\ddeexec",
|
||||||
|
"[Software\\\\Classes\\\\http\\\\shell\\\\open\\\\ddeexec",
|
||||||
|
"[Software\\\\Classes\\\\https\\\\shell\\\\open\\\\ddeexec",
|
||||||
|
}
|
||||||
|
dde_wb = '@="\\"C:\\\\windows\\\\system32\\\\winebrowser.exe\\" -nohome"'
|
||||||
|
|
||||||
|
sysreg_fp = self.prefix_dir + "system.reg"
|
||||||
|
new_sysreg_fp = self.prefix_dir + "system.reg.new"
|
||||||
|
|
||||||
|
log("Removing ShellExecute DDE registry entries.")
|
||||||
|
|
||||||
|
with open(sysreg_fp, "r") as reg_in:
|
||||||
|
with open(new_sysreg_fp, "w") as reg_out:
|
||||||
|
for line in reg_in:
|
||||||
|
if line[:line.find("ddeexec")+len("ddeexec")] in delete_keys:
|
||||||
|
reg_out.write(line.replace("ddeexec", "ddeexec_old", 1))
|
||||||
|
elif line.rstrip() == dde_wb:
|
||||||
|
reg_out.write(line.replace("-nohome", "%1"))
|
||||||
|
else:
|
||||||
|
reg_out.write(line)
|
||||||
|
|
||||||
|
# Slightly randomize backup file name to avoid colliding with
|
||||||
|
# other backups.
|
||||||
|
backup_sysreg_fp = "{}system.reg.{:x}.old".format(self.prefix_dir, randrange(16 ** 8))
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.rename(sysreg_fp, backup_sysreg_fp)
|
||||||
|
except OSError:
|
||||||
|
log("Failed to back up old system.reg. Simply deleting it.")
|
||||||
|
os.remove(sysreg_fp)
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.rename(new_sysreg_fp, sysreg_fp)
|
||||||
|
except OSError:
|
||||||
|
log("Unable to write new registry file to " + sysreg_fp)
|
||||||
|
pass
|
||||||
|
|
||||||
stale_builtins = [self.prefix_dir + "/drive_c/windows/system32/amd_ags_x64.dll",
|
stale_builtins = [self.prefix_dir + "/drive_c/windows/system32/amd_ags_x64.dll",
|
||||||
self.prefix_dir + "/drive_c/windows/syswow64/amd_ags_x64.dll" ]
|
self.prefix_dir + "/drive_c/windows/syswow64/amd_ags_x64.dll" ]
|
||||||
for builtin in stale_builtins:
|
for builtin in stale_builtins:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user