Eigene .play-Dateiendung fuer Windows-Patchdateien + manuelle Installation per Doppelklick
Windows-Patch-Pakete heissen jetzt Playtube-vX.Y.Z-win64-patch.play statt .zip (technisch weiterhin ein ganz normales ZIP-Archiv - Windows/Python schauen beim Entpacken auf die Magic Bytes, nicht auf die Endung). Playtube registriert .play beim ersten Start als Windows-Dateizuordnung (HKCU, keine Admin-Rechte noetig), sodass eine manuell heruntergeladene Patchdatei per Doppelklick installiert werden kann, ohne dass Playtube selbst etwas herunterladen muss: - shortcuts.py: ensure_play_file_association() registriert ProgID + DefaultIcon + shell/open/command und stoesst SHChangeNotify an, damit die Zuordnung sofort greift. - updater.py: UpdateInstaller akzeptiert jetzt optional local_archive_path statt einer download_url und ueberspringt dann den Download komplett. - main.py: erkennt eine .play-Datei als Kommandozeilenargument (Doppelklick- Start) und uebergibt sie an MainWindow.install_local_patch(). - release.yml: Windows-Patch wird als .zip gepackt und anschliessend zu .play umbenannt; _find_platform_asset() sucht fuer Windows-Patches jetzt nach .play statt .zip. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -12,7 +12,10 @@ from pathlib import Path
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
from playtube import __version__, app_id # noqa: E402
|
||||
from playtube.config import APP_NAME, clear_cache_on_update, load_config # noqa: E402
|
||||
from playtube.shortcuts import ensure_start_menu_shortcut # noqa: E402
|
||||
from playtube.shortcuts import ( # noqa: E402
|
||||
ensure_play_file_association,
|
||||
ensure_start_menu_shortcut,
|
||||
)
|
||||
|
||||
app_id.set_app_user_model_id()
|
||||
app_id.configure_webengine_process_path()
|
||||
@@ -33,6 +36,15 @@ from PySide6.QtWidgets import QApplication # noqa: E402
|
||||
from playtube.mainwindow import MainWindow # noqa: E402
|
||||
|
||||
|
||||
def _pending_local_patch() -> str | None:
|
||||
"""Falls Playtube per Doppelklick auf eine ".play"-Patchdatei gestartet wurde
|
||||
(siehe shortcuts.ensure_play_file_association), liefert den Pfad dazu."""
|
||||
for arg in sys.argv[1:]:
|
||||
if arg.lower().endswith(".play") and Path(arg).is_file():
|
||||
return str(Path(arg).resolve())
|
||||
return None
|
||||
|
||||
|
||||
def main() -> int:
|
||||
QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts, True)
|
||||
app = QApplication(sys.argv)
|
||||
@@ -51,10 +63,17 @@ def main() -> int:
|
||||
# komplett, da Playtube als portables ZIP ohne Installer ausgeliefert wird.
|
||||
clear_cache_on_update(__version__)
|
||||
ensure_start_menu_shortcut(APP_NAME)
|
||||
ensure_play_file_association(APP_NAME)
|
||||
|
||||
window = MainWindow(config)
|
||||
window.show()
|
||||
|
||||
# Playtube wurde per Doppelklick auf eine heruntergeladene .play-Patchdatei
|
||||
# gestartet -> direkt installieren statt selbst etwas herunterzuladen.
|
||||
local_patch = _pending_local_patch()
|
||||
if local_patch:
|
||||
window.install_local_patch(local_patch)
|
||||
|
||||
return app.exec()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user