Fix shortcut creation on windows
This commit is contained in:
parent
7ebeee0d1e
commit
c6b9f5c64f
2 changed files with 15 additions and 20 deletions
16
rare/app.py
16
rare/app.py
|
@ -60,18 +60,18 @@ class App(RareApp):
|
||||||
for handler in logging.root.handlers[:]:
|
for handler in logging.root.handlers[:]:
|
||||||
logging.root.removeHandler(handler)
|
logging.root.removeHandler(handler)
|
||||||
|
|
||||||
stream_handler = logging.StreamHandler(sys.stderr)
|
file_handler = logging.FileHandler(filename=file_name, encoding="utf-8")
|
||||||
stream_handler.setFormatter(fmt=logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
|
file_handler.setFormatter(fmt=logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
|
||||||
|
|
||||||
# configure logging
|
# configure logging
|
||||||
if args.debug:
|
if args.debug:
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
format="[%(name)s] %(levelname)s: %(message)s",
|
format="[%(name)s] %(levelname)s: %(message)s",
|
||||||
level=logging.DEBUG,
|
level=logging.DEBUG,
|
||||||
filename=file_name,
|
stream=sys.stderr,
|
||||||
)
|
)
|
||||||
stream_handler.setLevel(logging.DEBUG)
|
file_handler.setLevel(logging.DEBUG)
|
||||||
logging.root.addHandler(stream_handler)
|
logging.root.addHandler(file_handler)
|
||||||
logging.getLogger().setLevel(level=logging.DEBUG)
|
logging.getLogger().setLevel(level=logging.DEBUG)
|
||||||
# keep requests, asyncio and pillow quiet
|
# keep requests, asyncio and pillow quiet
|
||||||
logging.getLogger("requests").setLevel(logging.WARNING)
|
logging.getLogger("requests").setLevel(logging.WARNING)
|
||||||
|
@ -88,10 +88,10 @@ class App(RareApp):
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
format="[%(name)s] %(levelname)s: %(message)s",
|
format="[%(name)s] %(levelname)s: %(message)s",
|
||||||
level=logging.INFO,
|
level=logging.INFO,
|
||||||
filename=file_name,
|
stream=sys.stderr,
|
||||||
)
|
)
|
||||||
stream_handler.setLevel(logging.INFO)
|
file_handler.setLevel(logging.INFO)
|
||||||
logging.root.addHandler(stream_handler)
|
logging.root.addHandler(file_handler)
|
||||||
logger.info(f"Launching Rare version {rare.__version__}")
|
logger.info(f"Launching Rare version {rare.__version__}")
|
||||||
logger.info(f"Operating System: {platform.system()}")
|
logger.info(f"Operating System: {platform.system()}")
|
||||||
|
|
||||||
|
|
|
@ -180,10 +180,12 @@ def get_rare_executable() -> List[str]:
|
||||||
elif platform.system() == "Windows":
|
elif platform.system() == "Windows":
|
||||||
executable = [sys.executable]
|
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
|
# be sure to start consoleless then
|
||||||
executable[0] = executable[0].replace("python.exe", "pythonw.exe")
|
executable[0] = executable[0].replace("python.exe", "pythonw.exe")
|
||||||
executable.extend(["-m", "rare"])
|
|
||||||
else:
|
else:
|
||||||
executable = [sys.executable]
|
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):
|
if not os.path.exists(path):
|
||||||
return False
|
return False
|
||||||
executable = get_rare_executable()
|
executable = get_rare_executable()
|
||||||
|
executable = shlex.join(executable)
|
||||||
|
|
||||||
if for_rare:
|
if for_rare:
|
||||||
with open(os.path.join(path, "Rare.desktop"), "w") as desktop_file:
|
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:
|
if len(executable) > 1:
|
||||||
arguments.extend(executable[1:])
|
arguments.extend(executable[1:])
|
||||||
executable = executable[0]
|
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]))
|
|
||||||
|
|
||||||
if not for_rare:
|
if not for_rare:
|
||||||
arguments.extend(["launch", app_name])
|
arguments.extend(["launch", app_name])
|
||||||
|
|
||||||
|
shortcut.Targetpath = executable
|
||||||
# Maybe there is a better solution, but windows does not accept single quotes (Windows is weird)
|
# 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("'", '"')
|
shortcut.Arguments = shlex.join(arguments).replace("'", '"')
|
||||||
if for_rare:
|
if for_rare:
|
||||||
shortcut.WorkingDirectory = QStandardPaths.writableLocation(QStandardPaths.HomeLocation)
|
shortcut.WorkingDirectory = QStandardPaths.writableLocation(QStandardPaths.HomeLocation)
|
||||||
|
|
Loading…
Reference in a new issue