feat: Komplettierung der aktuellen Rippy-Etappe
Ampel / ampel (push) Failing after 29s

- Versionsanzeige für den Windows-Worker im UI inkl. Prüfung
- Absicherung der install.sh gegen fehlendes systemd
- Serien-Episoden-Erkennung und Laufzeitabgleich anhand TMDB-Daten (Heuristik)
- Umstellung der Windows-Worker-Installation auf SchTasks (Dienst-Ersatz)
- Kodi-Bibliotheks-Refresh über JSON-RPC integriert
This commit is contained in:
Hitonabi
2026-07-26 21:13:27 +02:00
parent d15900d1eb
commit e165e2a0d3
9 changed files with 179 additions and 78 deletions
+18 -48
View File
@@ -1,4 +1,4 @@
# Rippy Windows-Worker - GRAFISCHER Installer (WinForms, keine externe Runtime).
# Rippy Windows-Worker - GRAFISCHER Installer (WinForms, keine externe Runtime).
# Wird über rippy-worker-setup.bat gestartet (Doppelklick). Braucht nur
# Python 3.10+ auf der Maschine - kein Docker, kein git.
#
@@ -606,61 +606,31 @@ Start-Process cmd.exe -ArgumentList '/c timeout /t 4 /nobreak >nul & rd /s /q "'
(Join-Path $InstallDir "uninstall.ps1"), $uninstall,
(New-Object System.Text.UTF8Encoding $true))
# 7. Autostart über den Autostart-ORDNER, nicht über schtasks.
# 7. Autostart über den Task Scheduler (als Dienst-Ersatz).
#
# Befund 25.07.2026 (auf dem Commander-PC aufgetreten): schtasks /create
# mit /tn "RippyWorker" legt die Aufgabe im WURZELORDNER der
# Aufgabenplanung an, und das verlangt Administratorrechte. Der
# Installer läuft normal ohne. schtasks schrieb deshalb
# "FEHLER: Zugriff verweigert." nach stderr, und weil oben
# $ErrorActionPreference = "Stop" steht, wurde daraus ein Abbruch der
# GESAMTEN Installation - obwohl alles außer dem Autostart fertig war.
# Der Nutzer sah nur "FEHLER: FEHLER: Zugriff verweigert" samt dem
# irreführenden Tipp, die IP könne falsch sein.
#
# Der Autostart-Ordner braucht NIE Adminrechte, und der Nutzer kann die
# Verknüpfung dort selbst sehen und löschen. Zwei Fliegen.
# Commander-Wunsch 26.07.2026: SchTasks.exe statt Startmenü-Verknüpfung.
# Da der Installer jetzt zwingend mit Administratorrechten läuft (für
# das "Programme"-Verzeichnis), funktioniert schtasks problemlos.
# /RL HIGHEST verhindert UAC-Popups beim automatischen Start.
# /SC ONLOGON startet den Worker bei der Benutzeranmeldung — das ist
# wichtig, damit er Zugriff auf die eingehängten Netzwerklaufwerke
# des Benutzers hat (der SYSTEM-Account hätte das bei ONSTART nicht).
if ($chkAuto.Checked) {
try {
# Liegt das Programm unter "Programme", ist es eine Installation
# für die ganze Maschine - dann gehört der Autostart in den
# Autostart-Ordner ALLER Benutzer. Das passt auch zur Rechtelage:
# der Installer läuft dafür ohnehin erhöht, und bei einer
# Erhöhung über ein FREMDES Administratorkonto wäre der
# benutzereigene Ordner der des Admins - also der falsche.
# Bei einer Installation ins eigene Profil bleibt es persönlich.
$programme = [Environment]::GetFolderPath("ProgramFiles")
$programmeX86 = [Environment]::GetFolderPath("ProgramFilesX86")
$maschinenweit = $InstallDir.StartsWith($programme, "OrdinalIgnoreCase") `
-or ($programmeX86 -and $InstallDir.StartsWith($programmeX86, "OrdinalIgnoreCase"))
$autostartDir = if ($maschinenweit) {
[Environment]::GetFolderPath("CommonStartup")
# Der Pfad zur .bat muss in Anführungszeichen, falls Leerzeichen drin sind.
# schtasks erwartet diese Escaped-Anführungszeichen: \"C:\Pfad\...\"
$aktion = "\`"$InstallDir\start-tray.bat\`""
$process = Start-Process schtasks -ArgumentList "/create /tn `"RippyWorker`" /tr $aktion /sc ONLOGON /rl HIGHEST /f" -NoNewWindow -Wait -PassThru
if ($process.ExitCode -eq 0) {
Log "Autostart als Aufgabe (Task Scheduler) eingerichtet (startet bei Anmeldung)."
} else {
[Environment]::GetFolderPath("Startup")
}
$lnkPfad = Join-Path $autostartDir "RippyWorker.lnk"
$wsh = New-Object -ComObject WScript.Shell
$lnk = $wsh.CreateShortcut($lnkPfad)
$lnk.TargetPath = (Join-Path $InstallDir "start-tray.bat")
$lnk.WorkingDirectory = $InstallDir
$lnk.Description = "Rippy Encoding-Worker"
# WindowStyle 7 = minimiert. start-tray.bat startet pythonw (kein
# Konsolenfenster), aber die .bat selbst blitzt sonst kurz auf.
$lnk.WindowStyle = 7
$ico = Join-Path $InstallDir "rippy.ico"
if (Test-Path $ico) { $lnk.IconLocation = $ico }
$lnk.Save()
if ($maschinenweit) {
Log "Autostart eingerichtet (für alle Benutzer dieser Maschine)."
} else {
Log "Autostart eingerichtet (für dich, startet bei der Anmeldung)."
throw "ExitCode $($process.ExitCode)"
}
} catch {
# Nur eine Warnung: der Worker selbst ist fertig und startbar.
Log "HINWEIS: Autostart konnte nicht eingerichtet werden ($($_.Exception.Message))."
Log "HINWEIS: Autostart-Aufgabe konnte nicht eingerichtet werden ($_)."
Log " Der Worker ist trotzdem fertig installiert und läuft."
Log " Von Hand: start-tray.bat in den Autostart-Ordner verknüpfen"
Log " (Windows-Taste + R, dann shell:startup eingeben)."
}
}