mirror of
https://github.com/ValveSoftware/Proton.git
synced 2024-12-27 23:25:50 +03:00
proton: Don't use start.exe for unknown executable types
Wine seems to handle this better now than it did in 3.7. It can launch Doom 2's batch scripts directly, so this is no longer helpful.
This commit is contained in:
parent
7ab9e40820
commit
87bbcc627d
44
proton
44
proton
@ -463,39 +463,6 @@ if "WINEDLLOVERRIDES" in os.environ:
|
|||||||
else:
|
else:
|
||||||
env["WINEDLLOVERRIDES"] = s
|
env["WINEDLLOVERRIDES"] = s
|
||||||
|
|
||||||
ARCH_UNKNOWN=0
|
|
||||||
ARCH_I386=1
|
|
||||||
ARCH_X86_64=2
|
|
||||||
def determine_architecture(path):
|
|
||||||
#algorithm from file's msdos magic file
|
|
||||||
try:
|
|
||||||
with open(path, "rb") as f:
|
|
||||||
magic = f.read(2)
|
|
||||||
if magic != b"MZ":
|
|
||||||
return ARCH_UNKNOWN
|
|
||||||
f.seek(0x18)
|
|
||||||
reloc = struct.unpack('<H', f.read(2))[0]
|
|
||||||
if reloc < 0x40:
|
|
||||||
#DOS
|
|
||||||
return ARCH_I386
|
|
||||||
f.seek(0x3c)
|
|
||||||
pe_offs = struct.unpack('<L', f.read(4))[0]
|
|
||||||
f.seek(pe_offs)
|
|
||||||
magic = f.read(4)
|
|
||||||
if magic != b"PE\0\0":
|
|
||||||
return ARCH_UNKNOWN
|
|
||||||
f.seek(pe_offs + 4)
|
|
||||||
arch = struct.unpack('<H', f.read(2))[0]
|
|
||||||
if arch == 0x8664:
|
|
||||||
return ARCH_X86_64
|
|
||||||
if arch == 0x014c:
|
|
||||||
return ARCH_I386
|
|
||||||
return ARCH_UNKNOWN
|
|
||||||
except OSError:
|
|
||||||
return ARCH_UNKNOWN
|
|
||||||
|
|
||||||
game_arch = determine_architecture(sys.argv[2])
|
|
||||||
|
|
||||||
def dump_dbg_env(f):
|
def dump_dbg_env(f):
|
||||||
f.write("PATH=\"" + env["PATH"] + "\" \\\n")
|
f.write("PATH=\"" + env["PATH"] + "\" \\\n")
|
||||||
f.write("\tTERM=\"xterm\" \\\n") #XXX
|
f.write("\tTERM=\"xterm\" \\\n") #XXX
|
||||||
@ -595,10 +562,7 @@ def dump_dbg_scripts():
|
|||||||
f.write(" \"" + arg + "\"")
|
f.write(" \"" + arg + "\"")
|
||||||
f.write(")\n")
|
f.write(")\n")
|
||||||
dump_dbg_env(f)
|
dump_dbg_env(f)
|
||||||
if game_arch == ARCH_UNKNOWN:
|
f.write("\t\"" + wine_path + "\" \"${@:-${DEF_CMD[@]}}\"\n")
|
||||||
f.write("\t\"" + wine_path + "\" start \"${@:-${DEF_CMD[@]}}\"\n")
|
|
||||||
else:
|
|
||||||
f.write("\t\"" + wine_path + "\" \"${@:-${DEF_CMD[@]}}\"\n")
|
|
||||||
os.chmod(tmpdir + "run", 0o755)
|
os.chmod(tmpdir + "run", 0o755)
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
@ -607,11 +571,7 @@ def run():
|
|||||||
dump_dbg_scripts()
|
dump_dbg_scripts()
|
||||||
except OSError:
|
except OSError:
|
||||||
log("Unable to write debug scripts! " + str(sys.exc_info()[1]))
|
log("Unable to write debug scripts! " + str(sys.exc_info()[1]))
|
||||||
if game_arch == ARCH_UNKNOWN:
|
run_wine([wine_path, "steam"] + sys.argv[2:])
|
||||||
#probably a batch script or something, hopefully start.exe can handle it
|
|
||||||
run_wine([wine_path, "steam", "start", "/unix"] + sys.argv[2:])
|
|
||||||
else:
|
|
||||||
run_wine([wine_path, "steam"] + sys.argv[2:])
|
|
||||||
|
|
||||||
if sys.version_info[0] == 2:
|
if sys.version_info[0] == 2:
|
||||||
binary_stdout = sys.stdout
|
binary_stdout = sys.stdout
|
||||||
|
Loading…
Reference in New Issue
Block a user