1
0
Fork 0
mirror of synced 2024-06-17 10:04:43 +12:00

Fix shortcut creation on windows

This commit is contained in:
Stelios Tsampas 2022-09-08 13:16:15 +03:00
parent 7ebeee0d1e
commit c6b9f5c64f
2 changed files with 15 additions and 20 deletions

View file

@ -60,18 +60,18 @@ class App(RareApp):
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
stream_handler = logging.StreamHandler(sys.stderr)
stream_handler.setFormatter(fmt=logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
file_handler = logging.FileHandler(filename=file_name, encoding="utf-8")
file_handler.setFormatter(fmt=logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
# configure logging
if args.debug:
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.DEBUG,
filename=file_name,
stream=sys.stderr,
)
stream_handler.setLevel(logging.DEBUG)
logging.root.addHandler(stream_handler)
file_handler.setLevel(logging.DEBUG)
logging.root.addHandler(file_handler)
logging.getLogger().setLevel(level=logging.DEBUG)
# keep requests, asyncio and pillow quiet
logging.getLogger("requests").setLevel(logging.WARNING)
@ -88,10 +88,10 @@ class App(RareApp):
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.INFO,
filename=file_name,
stream=sys.stderr,
)
stream_handler.setLevel(logging.INFO)
logging.root.addHandler(stream_handler)
file_handler.setLevel(logging.INFO)
logging.root.addHandler(file_handler)
logger.info(f"Launching Rare version {rare.__version__}")
logger.info(f"Operating System: {platform.system()}")

View file

@ -180,10 +180,12 @@ def get_rare_executable() -> List[str]:
elif platform.system() == "Windows":
executable = [sys.executable]
if not sys.executable.endswith("Rare.exe"):
if sys.executable != os.path.abspath(sys.argv[0]):
executable.append(os.path.abspath(sys.argv[0]))
if executable[0].endswith("python.exe"):
# be sure to start consoleless then
executable[0] = executable[0].replace("python.exe", "pythonw.exe")
executable.extend(["-m", "rare"])
else:
executable = [sys.executable]
@ -208,6 +210,7 @@ def create_desktop_link(app_name=None, core: LegendaryCore = None, type_of_link=
if not os.path.exists(path):
return False
executable = get_rare_executable()
executable = shlex.join(executable)
if for_rare:
with open(os.path.join(path, "Rare.desktop"), "w") as desktop_file:
@ -274,21 +277,13 @@ def create_desktop_link(app_name=None, core: LegendaryCore = None, type_of_link=
if len(executable) > 1:
arguments.extend(executable[1:])
executable = executable[0]
if not sys.executable.endswith("Rare.exe"):
# be sure to start consoleless then
executable = sys.executable.replace("python.exe", "pythonw.exe")
arguments.append(os.path.abspath(sys.argv[0]))
executable = executable[0]
if not for_rare:
arguments.extend(["launch", app_name])
shortcut.Targetpath = executable
# Maybe there is a better solution, but windows does not accept single quotes (Windows is weird)
logger.warning(executable)
logger.warning(shlex.quote(executable).replace("'", '"'))
shortcut.Targetpath = shlex.quote(executable).replace("'", '"')
logger.warning(shlex.join(arguments).replace("'", '"'))
shortcut.Arguments = shlex.join(arguments).replace("'", '"')
if for_rare:
shortcut.WorkingDirectory = QStandardPaths.writableLocation(QStandardPaths.HomeLocation)