feat(installer): Verknuepfung auf dem Desktop - mit Rippy-Icon
Ampel / ampel (push) Successful in 30s
Ampel / ampel (push) Successful in 30s
Commander: "Und wenn man den worker installiert braucht man auch eine exe auf dem
Desktop abgelegt wird zum starten you know?"
Berechtigt: Die Startdateien lagen nur im Programmordner. Wer den Worker von Hand
starten wollte, musste erst "C:\Program Files\Rippy Worker" suchen - und genau
das war heute noetig, als der Worker stand.
Jetzt legen beide Installer eine Verknuepfung "Rippy Worker" auf den Desktop
(GUI mit Haekchen, Kommandozeile per -KeineDesktopVerknuepfung abschaltbar). Drei
Details, die den Unterschied machen:
* Das ICON wird mit ausgeliefert. rippy.ico lag im Repo, ging aber nie an die
Zielmaschine - die Verknuepfung haette das Batch-Standardsymbol getragen und
waere zwischen den anderen Icons unfindbar gewesen. Jetzt im Worker-Paket.
* WindowStyle 7 (minimiert): start-tray.bat startet pythonw, also ohne
Konsolenfenster - aber die .bat selbst blitzt sonst kurz auf. Gilt jetzt auch
fuer die Autostart-Verknuepfung, wo derselbe Blitz war.
* Der DEINSTALLER nimmt sie mit, an beiden moeglichen Orten (eigener Desktop
und Desktop aller Benutzer). "Rueckstandsfrei entfernbar" ist ein
MUSS-Kriterium; ein totes Symbol auf dem Desktop waere genau so ein Rueckstand.
Dieselbe Rechte-Ueberlegung wie beim Autostart: bei einer Installation unter
"Programme" auf den Desktop ALLER Benutzer, sonst auf den eigenen - bei einer
UAC-Erhoehung ueber ein fremdes Admin-Konto waere der eigene der falsche.
Layout headless gerendert und angesehen (Fenster 648 -> 672 px, nichts
ueberlappt), beide .ps1 mit echtem PowerShell 5.1 geprueft, .exe neu gebaut.
Und die CRLF-Falle aus dem Savepoint hat prompt wieder zugeschlagen: Mein
Python-Rewrite machte aus install-gui.ps1 LF - zurueckgedreht, `file` bestaetigt
BOM und CRLF fuer beide.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,7 +47,7 @@ $cPurple = [System.Drawing.Color]::FromArgb(126, 34, 206)
|
||||
# --- Fenster ---------------------------------------------------------------
|
||||
$form = New-Object System.Windows.Forms.Form
|
||||
$form.Text = "Rippy Encoding-Worker - Installation"
|
||||
$form.ClientSize = New-Object System.Drawing.Size(560, 648)
|
||||
$form.ClientSize = New-Object System.Drawing.Size(560, 672)
|
||||
$form.StartPosition = "CenterScreen"
|
||||
$form.FormBorderStyle = "FixedDialog"
|
||||
$form.MaximizeBox = $false
|
||||
@@ -260,9 +260,20 @@ $chkAuto.Checked = $true
|
||||
$chkAuto.ForeColor = $cText
|
||||
$form.Controls.Add($chkAuto)
|
||||
|
||||
# Verknuepfung auf dem Desktop (Commander-Wunsch 26.07.2026). Vorher lagen die
|
||||
# Startdateien nur im Programmordner - wer den Worker von Hand starten wollte,
|
||||
# musste erst "C:\Program Files\Rippy Worker" suchen.
|
||||
$chkDesktop = New-Object System.Windows.Forms.CheckBox
|
||||
$chkDesktop.Text = "Verknüpfung auf dem Desktop anlegen"
|
||||
$chkDesktop.Location = New-Object System.Drawing.Point(24, 388)
|
||||
$chkDesktop.Size = New-Object System.Drawing.Size(400, 22)
|
||||
$chkDesktop.Checked = $true
|
||||
$chkDesktop.ForeColor = $cText
|
||||
$form.Controls.Add($chkDesktop)
|
||||
|
||||
# Log-Bereich
|
||||
$log = New-Object System.Windows.Forms.TextBox
|
||||
$log.Location = New-Object System.Drawing.Point(24, 396)
|
||||
$log.Location = New-Object System.Drawing.Point(24, 420)
|
||||
$log.Size = New-Object System.Drawing.Size(500, 174)
|
||||
$log.Multiline = $true
|
||||
$log.ReadOnly = $true
|
||||
@@ -276,7 +287,7 @@ $form.Controls.Add($log)
|
||||
# Knöpfe
|
||||
$btnInstall = New-Object System.Windows.Forms.Button
|
||||
$btnInstall.Text = "Installieren"
|
||||
$btnInstall.Location = New-Object System.Drawing.Point(24, 584)
|
||||
$btnInstall.Location = New-Object System.Drawing.Point(24, 608)
|
||||
$btnInstall.Size = New-Object System.Drawing.Size(150, 40)
|
||||
$btnInstall.BackColor = $cAmber
|
||||
$btnInstall.ForeColor = $cBg
|
||||
@@ -286,7 +297,7 @@ $form.Controls.Add($btnInstall)
|
||||
|
||||
$btnStart = New-Object System.Windows.Forms.Button
|
||||
$btnStart.Text = "Worker starten"
|
||||
$btnStart.Location = New-Object System.Drawing.Point(190, 584)
|
||||
$btnStart.Location = New-Object System.Drawing.Point(190, 608)
|
||||
$btnStart.Size = New-Object System.Drawing.Size(150, 40)
|
||||
$btnStart.BackColor = $cEmerald
|
||||
$btnStart.ForeColor = [System.Drawing.Color]::White
|
||||
@@ -520,12 +531,18 @@ Get-CimInstance Win32_Process | Where-Object {
|
||||
} | ForEach-Object { Stop-Process -Id `$_.ProcessId -Force -ErrorAction SilentlyContinue }
|
||||
Start-Sleep 3
|
||||
|
||||
# 2. Autostart entfernen — BEIDE möglichen Orte, weil die Installation je nach
|
||||
# Zielverzeichnis persönlich oder maschinenweit war.
|
||||
# 2. Verknüpfungen entfernen — Autostart UND Desktop, jeweils an BEIDEN möglichen
|
||||
# Orten, weil die Installation je nach Zielverzeichnis persönlich oder
|
||||
# maschinenweit war. „Rückstandsfrei entfernbar" ist ein MUSS-Kriterium; eine
|
||||
# tote Verknüpfung auf dem Desktop wäre genau so ein Rückstand.
|
||||
foreach (`$ort in @("Startup", "CommonStartup")) {
|
||||
`$lnk = Join-Path ([Environment]::GetFolderPath(`$ort)) "RippyWorker.lnk"
|
||||
if (Test-Path `$lnk) { Remove-Item -Force `$lnk -ErrorAction SilentlyContinue }
|
||||
}
|
||||
foreach (`$ort in @("Desktop", "CommonDesktopDirectory")) {
|
||||
`$lnk = Join-Path ([Environment]::GetFolderPath(`$ort)) "Rippy Worker.lnk"
|
||||
if (Test-Path `$lnk) { Remove-Item -Force `$lnk -ErrorAction SilentlyContinue }
|
||||
}
|
||||
# ... und die geplante Aufgabe aus älteren Installationen, falls vorhanden.
|
||||
schtasks /delete /tn "RippyWorker" /f 2>`$null | Out-Null
|
||||
|
||||
@@ -588,6 +605,11 @@ Start-Process cmd.exe -ArgumentList '/c timeout /t 4 /nobreak >nul & rd /s /q "'
|
||||
$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)."
|
||||
@@ -603,6 +625,44 @@ Start-Process cmd.exe -ArgumentList '/c timeout /t 4 /nobreak >nul & rd /s /q "'
|
||||
}
|
||||
}
|
||||
|
||||
# 8. Verknüpfung auf dem Desktop (Commander-Wunsch 26.07.2026: „wenn man
|
||||
# den Worker installiert braucht man auch eine exe auf dem Desktop
|
||||
# zum Starten"). Vorher lagen die Startdateien nur im Programmordner —
|
||||
# wer den Worker von Hand starten wollte, musste erst
|
||||
# "C:\Program Files\Rippy Worker" suchen.
|
||||
#
|
||||
# Dieselbe Rechte-Überlegung wie beim Autostart: bei einer Installation
|
||||
# unter "Programme" auf den Desktop ALLER Benutzer, sonst auf den
|
||||
# eigenen. Und ein Fehlschlag hier ist nur eine Warnung — der Worker
|
||||
# läuft davon unberührt.
|
||||
if ($chkDesktop.Checked) {
|
||||
try {
|
||||
$programme = [Environment]::GetFolderPath("ProgramFiles")
|
||||
$programmeX86 = [Environment]::GetFolderPath("ProgramFilesX86")
|
||||
$maschinenweit = $InstallDir.StartsWith($programme, "OrdinalIgnoreCase") `
|
||||
-or ($programmeX86 -and $InstallDir.StartsWith($programmeX86, "OrdinalIgnoreCase"))
|
||||
$desktopDir = if ($maschinenweit) {
|
||||
[Environment]::GetFolderPath("CommonDesktopDirectory")
|
||||
} else {
|
||||
[Environment]::GetFolderPath("Desktop")
|
||||
}
|
||||
$wsh = New-Object -ComObject WScript.Shell
|
||||
$lnk = $wsh.CreateShortcut((Join-Path $desktopDir "Rippy Worker.lnk"))
|
||||
$lnk.TargetPath = (Join-Path $InstallDir "start-tray.bat")
|
||||
$lnk.WorkingDirectory = $InstallDir
|
||||
$lnk.Description = "Rippy Encoding-Worker starten (Symbol neben der Uhr)"
|
||||
$lnk.WindowStyle = 7 # minimiert, damit die .bat nicht aufblitzt
|
||||
$ico = Join-Path $InstallDir "rippy.ico"
|
||||
if (Test-Path $ico) { $lnk.IconLocation = $ico }
|
||||
$lnk.Save()
|
||||
Log "Verknüpfung 'Rippy Worker' auf dem Desktop angelegt."
|
||||
} catch {
|
||||
Log "HINWEIS: Desktop-Verknüpfung ging nicht ($($_.Exception.Message))."
|
||||
Log " Der Worker ist trotzdem fertig — starten über"
|
||||
Log " $InstallDir\start-tray.bat"
|
||||
}
|
||||
}
|
||||
|
||||
Log ""
|
||||
Log "FERTIG! Ordner: $InstallDir"
|
||||
Log "Klick 'Worker starten' - er erscheint dann in Rippy unter Einstellungen -> Worker."
|
||||
|
||||
Reference in New Issue
Block a user