- 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:
@@ -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)."
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user