Fix shortcut creation on windows
This commit is contained in:
parent
7ebeee0d1e
commit
c6b9f5c64f
16
rare/app.py
16
rare/app.py
|
@ -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()}")
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue