#Requires -RunAsAdministrator $ErrorActionPreference = "Continue" $ProgressPreference = "SilentlyContinue" # TLS 1.2 erzwingen - ohne das schlagen HTTPS-Downloads auf aelteren Servern fehl [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $tempDir = "$env:TEMP\vserver-setup" $desktopPath = [Environment]::GetFolderPath("Desktop") $winrarPath = "C:\Program Files\WinRAR\WinRAR.exe" $totalSteps = 18 New-Item -ItemType Directory -Force -Path $tempDir | Out-Null Write-Host "========================================" -ForegroundColor Cyan Write-Host " VServer Setup - Automatische Installation" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "" function Download-File { param($Url, $Output) $filename = Split-Path $Output -Leaf Write-Host " Downloading: $filename" -ForegroundColor Gray try { $webClient = New-Object System.Net.WebClient $webClient.Headers.Add("User-Agent", "Mozilla/5.0") $webClient.DownloadFile($Url, $Output) return $true } catch { Write-Host " FEHLER beim Download: $_" -ForegroundColor Red return $false } } function Unrar-File { param($RarPath, $DestPath) if (Test-Path $winrarPath) { Start-Process -FilePath $winrarPath -ArgumentList "x", "-ibck", "-o+", $RarPath, "$DestPath\" -Wait return $true } else { Write-Host " FEHLER: WinRAR nicht gefunden" -ForegroundColor Red return $false } } function Install-Gitea-App { param($Name, $Repo, $StepNum, $DetectPaths, $ProcessName) Write-Host "" Write-Host "[$StepNum/$totalSteps] $Name..." -ForegroundColor Yellow foreach ($p in $DetectPaths) { if (Test-Path $p) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray return } } try { Write-Host " Hole neueste Version von Gitea..." -ForegroundColor Gray $releaseApi = "https://git.24-music.de/api/v1/repos/Administrator/$Repo/releases?limit=1" $wc = New-Object System.Net.WebClient $wc.Headers.Add("User-Agent", "Mozilla/5.0") $release = $wc.DownloadString($releaseApi) | ConvertFrom-Json $setupAsset = $release[0].assets | Where-Object { $_.name -like "*Setup*.exe" -and $_.name -notlike "*.blockmap" } | Select-Object -First 1 if ($setupAsset) { $installer = "$tempDir\$($setupAsset.name)" Write-Host " Version: $($release[0].tag_name)" -ForegroundColor Gray if (Download-File -Url $setupAsset.browser_download_url -Output $installer) { Write-Host " Installiere $Name (silent)..." -ForegroundColor Gray Start-Process -FilePath $installer -ArgumentList "/S" -Wait # Electron-Apps starten manchmal nach Installation - beenden damit Setup weiterlaeuft if ($ProcessName) { Start-Sleep -Seconds 3 Stop-Process -Name $ProcessName -Force -ErrorAction SilentlyContinue } Write-Host " $Name installiert!" -ForegroundColor Green } } else { Write-Host " FEHLER: Kein Setup-Asset im Release gefunden" -ForegroundColor Red } } catch { Write-Host " FEHLER beim Abrufen der Gitea-Release: $_" -ForegroundColor Red } } # 1. PYTHON Write-Host "" Write-Host "[1/$totalSteps] Python..." -ForegroundColor Yellow $pythonInstalled = (Get-Command python -ErrorAction SilentlyContinue) -or (Test-Path "C:\Program Files\Python*\python.exe") if ($pythonInstalled) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $pythonUrl = "https://www.python.org/ftp/python/3.12.4/python-3.12.4-amd64.exe" $pythonInstaller = "$tempDir\python-installer.exe" if (Download-File -Url $pythonUrl -Output $pythonInstaller) { Write-Host " Installiere Python (silent)..." -ForegroundColor Gray Start-Process -FilePath $pythonInstaller -ArgumentList "/quiet", "InstallAllUsers=1", "PrependPath=1", "Include_pip=1" -Wait Write-Host " Python installiert!" -ForegroundColor Green } } # 2. FFMPEG Write-Host "" Write-Host "[2/$totalSteps] FFmpeg..." -ForegroundColor Yellow if (Test-Path "C:\ffmpeg\bin\ffmpeg.exe") { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $ffmpegUrl = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip" $ffmpegZip = "$tempDir\ffmpeg.zip" if (Download-File -Url $ffmpegUrl -Output $ffmpegZip) { Write-Host " Entpacke FFmpeg nach C:\ffmpeg..." -ForegroundColor Gray if (Test-Path "C:\ffmpeg") { Remove-Item -Path "C:\ffmpeg" -Recurse -Force } Expand-Archive -Path $ffmpegZip -DestinationPath $tempDir -Force $ffmpegExtracted = Get-ChildItem -Path $tempDir -Directory | Where-Object { $_.Name -like "ffmpeg-*" } | Select-Object -First 1 if ($ffmpegExtracted) { Move-Item -Path $ffmpegExtracted.FullName -Destination "C:\ffmpeg" -Force Write-Host " FFmpeg entpackt!" -ForegroundColor Green } } } $currentPath = [Environment]::GetEnvironmentVariable("Path", "Machine") if ($currentPath -notlike "*C:\ffmpeg\bin*") { Write-Host " Setze PATH Variable..." -ForegroundColor Gray [Environment]::SetEnvironmentVariable("Path", "$currentPath;C:\ffmpeg\bin", "Machine") Write-Host " PATH aktualisiert!" -ForegroundColor Green } # 3. WINRAR Write-Host "" Write-Host "[3/$totalSteps] WinRAR..." -ForegroundColor Yellow if (Test-Path $winrarPath) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $winrarUrl = "https://www.win-rar.com/fileadmin/winrar-versions/winrar/winrar-x64-701.exe" $winrarInstaller = "$tempDir\winrar-installer.exe" if (Download-File -Url $winrarUrl -Output $winrarInstaller) { Write-Host " Installiere WinRAR (silent)..." -ForegroundColor Gray Start-Process -FilePath $winrarInstaller -ArgumentList "/S" -Wait Write-Host " WinRAR installiert!" -ForegroundColor Green } } # 4. G-EARTH (von Gitea - nach WinRAR, damit wir entpacken koennen) Write-Host "" Write-Host "[4/$totalSteps] G-Earth..." -ForegroundColor Yellow if (Test-Path "$desktopPath\G-Earth") { Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray } else { try { Write-Host " Hole neueste Version von Gitea..." -ForegroundColor Gray $releaseApi = "https://git.24-music.de/api/v1/repos/Administrator/G-Earth/releases?limit=1" $wc = New-Object System.Net.WebClient $wc.Headers.Add("User-Agent", "Mozilla/5.0") $release = ($wc.DownloadString($releaseApi) | ConvertFrom-Json) $rarAsset = $release[0].assets | Where-Object { $_.name -like "*.rar" } | Select-Object -First 1 if ($rarAsset) { $gearthRar = "$tempDir\$($rarAsset.name)" Write-Host " Version: $($release[0].tag_name)" -ForegroundColor Gray if (Download-File -Url $rarAsset.browser_download_url -Output $gearthRar) { Write-Host " Entpacke G-Earth auf Desktop..." -ForegroundColor Gray # In temp entpacken, dann nach G-Earth umbenennen (RAR-Ordnername aendert sich je Version) $gearthTemp = "$tempDir\G-Earth-extract" New-Item -ItemType Directory -Force -Path $gearthTemp | Out-Null if (Unrar-File -RarPath $gearthRar -DestPath $gearthTemp) { # Finde den entpackten Ordner (z.B. "G-Earth 1.5.4") $extracted = Get-ChildItem -Path $gearthTemp -Directory | Where-Object { $_.Name -like "G-Earth*" } | Select-Object -First 1 if ($extracted) { Move-Item -Path $extracted.FullName -Destination "$desktopPath\G-Earth" -Force } else { # Falls die Dateien direkt im Ordner liegen Move-Item -Path $gearthTemp -Destination "$desktopPath\G-Earth" -Force } Write-Host " G-Earth installiert!" -ForegroundColor Green } } } else { Write-Host " FEHLER: Kein .rar-Asset im Release gefunden" -ForegroundColor Red } } catch { Write-Host " FEHLER beim Abrufen der Gitea-Release: $_" -ForegroundColor Red } } # 5. VLC Write-Host "" Write-Host "[5/$totalSteps] VLC..." -ForegroundColor Yellow if (Test-Path "C:\Program Files\VideoLAN\VLC\vlc.exe") { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $vlcUrl = "https://ftp.fau.de/videolan/vlc/3.0.21/win64/vlc-3.0.21-win64.exe" $vlcInstaller = "$tempDir\vlc-installer.exe" if (Download-File -Url $vlcUrl -Output $vlcInstaller) { Write-Host " Installiere VLC (silent)..." -ForegroundColor Gray Start-Process -FilePath $vlcInstaller -ArgumentList "/S", "/L=1031" -Wait Write-Host " VLC installiert!" -ForegroundColor Green } } # 6. JAVA 8 Write-Host "" Write-Host "[6/$totalSteps] Java 8..." -ForegroundColor Yellow $javaInstalled = (Test-Path "C:\Program Files\Java\*") -or (Test-Path "C:\Program Files\Eclipse Adoptium\*") -or (Get-Command java -ErrorAction SilentlyContinue) if ($javaInstalled) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $javaUrl = "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u432-b06/OpenJDK8U-jre_x64_windows_hotspot_8u432b06.msi" $javaInstaller = "$tempDir\java8.msi" if (Download-File -Url $javaUrl -Output $javaInstaller) { Write-Host " Installiere Java 8 (silent)..." -ForegroundColor Gray Start-Process -FilePath "msiexec.exe" -ArgumentList "/i", $javaInstaller, "/quiet", "/norestart" -Wait Write-Host " Java 8 installiert!" -ForegroundColor Green } } # 7. .NET FRAMEWORK 4.8 Write-Host "" Write-Host "[7/$totalSteps] .NET Framework 4.8..." -ForegroundColor Yellow $netInstalled = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" -ErrorAction SilentlyContinue).Release -ge 528040 if ($netInstalled) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $netUrl = "https://go.microsoft.com/fwlink/?linkid=2088631" $netInstaller = "$tempDir\dotnet48.exe" if (Download-File -Url $netUrl -Output $netInstaller) { Write-Host " Installiere .NET Framework 4.8 (silent)..." -ForegroundColor Gray Start-Process -FilePath $netInstaller -ArgumentList "/q", "/norestart" -Wait Write-Host " .NET Framework 4.8 installiert!" -ForegroundColor Green } } # 8. .NET 6.0 DESKTOP RUNTIME Write-Host "" Write-Host "[8/$totalSteps] .NET 6.0 Desktop Runtime..." -ForegroundColor Yellow $net6Installed = (Test-Path "C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\6.*") -or (Test-Path "C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.*") if ($net6Installed) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $net6Url = "https://streamerware.de/windowsdesktop-runtime-6.0.36-win-x64.exe" $net6Installer = "$tempDir\dotnet6-desktop.exe" if (Download-File -Url $net6Url -Output $net6Installer) { Write-Host " Installiere .NET 6.0 Desktop Runtime (silent)..." -ForegroundColor Gray Start-Process -FilePath $net6Installer -ArgumentList "/install", "/quiet", "/norestart" -Wait Write-Host " .NET 6.0 Desktop Runtime installiert!" -ForegroundColor Green } } # 9. .NET 8.0 DESKTOP RUNTIME Write-Host "" Write-Host "[9/$totalSteps] .NET 8.0 Desktop Runtime..." -ForegroundColor Yellow $net8Installed = (Test-Path "C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.*") -or (Test-Path "C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.*") if ($net8Installed) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $net8Url = "https://streamerware.de/windowsdesktop-runtime-8.0.23-win-x64.exe" $net8Installer = "$tempDir\dotnet8-desktop.exe" if (Download-File -Url $net8Url -Output $net8Installer) { Write-Host " Installiere .NET 8.0 Desktop Runtime (silent)..." -ForegroundColor Gray Start-Process -FilePath $net8Installer -ArgumentList "/install", "/quiet", "/norestart" -Wait Write-Host " .NET 8.0 Desktop Runtime installiert!" -ForegroundColor Green } } # 10. GOOGLE CHROME Write-Host "" Write-Host "[10/$totalSteps] Google Chrome..." -ForegroundColor Yellow $chromeInstalled = (Test-Path "C:\Program Files\Google\Chrome\Application\chrome.exe") -or (Test-Path "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe") if ($chromeInstalled) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $chromeUrl = "https://dl.google.com/chrome/install/latest/chrome_installer.exe" $chromeInstaller = "$tempDir\chrome_installer.exe" if (Download-File -Url $chromeUrl -Output $chromeInstaller) { Write-Host " Installiere Google Chrome (silent)..." -ForegroundColor Gray Start-Process -FilePath $chromeInstaller -ArgumentList "/silent", "/install" -Wait Write-Host " Google Chrome installiert!" -ForegroundColor Green } } # 11. HABBO LAUNCHER Write-Host "" Write-Host "[11/$totalSteps] Habbo Launcher..." -ForegroundColor Yellow $habboInstalled = (Test-Path "$env:LOCALAPPDATA\Programs\habbo-launcher\Habbo Launcher.exe") -or (Test-Path "C:\Program Files\Habbo Launcher\*") if ($habboInstalled) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $habboUrl = "https://streamerware.de/HabboLauncher-Setup-1.0.80.exe" $habboInstaller = "$tempDir\HabboLauncher-Setup.exe" if (Download-File -Url $habboUrl -Output $habboInstaller) { Write-Host " Installiere Habbo Launcher (silent)..." -ForegroundColor Gray Start-Process -FilePath $habboInstaller -ArgumentList "/S" -Wait Start-Sleep -Seconds 3 Stop-Process -Name "Habbo Launcher" -Force -ErrorAction SilentlyContinue Write-Host " Habbo Launcher installiert!" -ForegroundColor Green } } # 12. JDOWNLOADER Write-Host "" Write-Host "[12/$totalSteps] JDownloader..." -ForegroundColor Yellow $jdDetectPaths = @( "$env:LOCALAPPDATA\JDownloader 2.0", "C:\Program Files\JDownloader", "C:\Users\Administrator\AppData\Local\JDownloader 2.0" ) $jdPath = $null foreach ($p in $jdDetectPaths) { if (Test-Path "$p\JDownloader2.exe") { $jdPath = $p; break } } if ($jdPath) { Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray } else { $jdUrl = "https://streamerware.de/JDownloader2Setup_windows-amd64_v21_0_7.exe" $jdInstaller = "$tempDir\JDownloader2Setup.exe" if (Download-File -Url $jdUrl -Output $jdInstaller) { Write-Host " Installiere JDownloader (silent)..." -ForegroundColor Gray # NICHT -Wait benutzen! Der JD-Installer (install4j) startet JDownloader nach # der Installation und wartet bis JD geschlossen wird. -Wait wuerde das Script # blockieren bis der User JDownloader manuell schliesst. $jdProc = Start-Process -FilePath $jdInstaller -ArgumentList "-q" -PassThru # Warte bis JDownloader2.exe auf der Festplatte erscheint (max 2 Minuten) Write-Host " Warte auf Installation..." -ForegroundColor Gray $installed = $false for ($i = 0; $i -lt 60; $i++) { Start-Sleep -Seconds 2 foreach ($dp in $jdDetectPaths) { if (Test-Path "$dp\JDownloader2.exe") { $jdPath = $dp $installed = $true break } } if ($installed) { break } if ($jdProc.HasExited -and -not $installed) { break } } # JDownloader und Installer-Prozess beenden Start-Sleep -Seconds 3 Stop-Process -Name "JDownloader2" -Force -ErrorAction SilentlyContinue # Auf einem frischen VServer laeuft kein anderes Java - sicher zu killen Stop-Process -Name "java" -Force -ErrorAction SilentlyContinue if (-not $jdProc.HasExited) { Stop-Process -Id $jdProc.Id -Force -ErrorAction SilentlyContinue } if ($installed) { Write-Host " JDownloader installiert!" -ForegroundColor Green } else { Write-Host " WARNUNG: JDownloader Installation nicht verifiziert" -ForegroundColor Yellow } } } # JD2 BACKUP IMPORTIEREN # Marker-Datei statt cfg/-Check: JDownloader erstellt cfg/ beim ersten Start mit # Default-Dateien, was den alten Check sofort zum Ueberspringen gebracht hat if ($jdPath) { if (Test-Path "$jdPath\.backup-imported") { Write-Host " JD2-Backup bereits importiert - ueberspringe." -ForegroundColor Gray } else { Write-Host " Importiere JD2-Backup..." -ForegroundColor Cyan Write-Host " Ziel: $jdPath" -ForegroundColor Gray $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $backupZip = Join-Path $scriptDir "jdownloader-backup.zip" if (-not (Test-Path $backupZip)) { Write-Host " WARNUNG: jdownloader-backup.zip nicht neben dem Script gefunden" -ForegroundColor Yellow Write-Host " Erwarte Datei in: $scriptDir" -ForegroundColor Yellow } if (Test-Path $backupZip) { try { Expand-Archive -Path $backupZip -DestinationPath $jdPath -Force New-Item -Path "$jdPath\.backup-imported" -ItemType File -Force | Out-Null Write-Host " JD2-Settings importiert!" -ForegroundColor Green } catch { Write-Host " FEHLER beim Import: $_" -ForegroundColor Red } } } } else { Write-Host " JDownloader-Ordner nicht gefunden - Backup uebersprungen" -ForegroundColor Yellow } # 13. DESKTOP ORDNER + FILE-UPLOADER Write-Host "" Write-Host "[13/$totalSteps] Desktop Ordner..." -ForegroundColor Yellow foreach ($folder in @("Fertig", "Unfertig")) { if (Test-Path "$desktopPath\$folder") { Write-Host " Ordner '$folder' bereits vorhanden." -ForegroundColor Gray } else { Write-Host " Erstelle Ordner '$folder'..." -ForegroundColor Gray New-Item -ItemType Directory -Force -Path "$desktopPath\$folder" | Out-Null } } if (Test-Path "$desktopPath\File-Uploader") { Write-Host " File-Uploader bereits vorhanden - ueberspringe." -ForegroundColor Gray } else { Write-Host " Lade File-Uploader vom Server..." -ForegroundColor Gray $fileUploaderUrl = "https://streamerware.de/FileUploader.rar" $uploaderRar = "$tempDir\FileUploader.rar" if (Download-File -Url $fileUploaderUrl -Output $uploaderRar) { if (Unrar-File -RarPath $uploaderRar -DestPath $desktopPath) { Write-Host " File-Uploader installiert!" -ForegroundColor Green } } } # 14. SCRIPTE Write-Host "" Write-Host "[14/$totalSteps] Scripte..." -ForegroundColor Yellow if (Test-Path "$desktopPath\Rename MKV AVI.py") { Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray } else { $scripteUrl = "https://streamerware.de/Scripte.rar" $scripteRar = "$tempDir\Scripte.rar" if (Download-File -Url $scripteUrl -Output $scripteRar) { Write-Host " Entpacke Scripte auf Desktop..." -ForegroundColor Gray if (Unrar-File -RarPath $scripteRar -DestPath $desktopPath) { Write-Host " Scripte installiert!" -ForegroundColor Green } } } # 15. TWITCH VOD MANAGER (von Gitea) Install-Gitea-App -Name "Twitch VOD Manager" -Repo "Twitch-VOD-Manager" ` -StepNum 15 ` -DetectPaths @("$env:LOCALAPPDATA\Programs\twitch-vod-manager\Twitch VOD Manager.exe", "$desktopPath\Twitch VOD Manager.lnk") ` -ProcessName "Twitch VOD Manager" # 16. MULTI-HOSTER-UPLOAD (von Gitea) Install-Gitea-App -Name "Multi-Hoster-Upload" -Repo "Multi-Hoster-Upload" ` -StepNum 16 ` -DetectPaths @("$env:LOCALAPPDATA\Programs\multi-hoster-upload\Multi-Hoster-Upload.exe", "$desktopPath\Multi-Hoster-Upload.lnk") ` -ProcessName "Multi-Hoster-Upload" # 17. REAL-DEBRID-DOWNLOADER (von Gitea) Install-Gitea-App -Name "Real-Debrid-Downloader" -Repo "real-debrid-downloader" ` -StepNum 17 ` -DetectPaths @("$env:LOCALAPPDATA\Programs\real-debrid-downloader\Real-Debrid-Downloader.exe", "$desktopPath\Real-Debrid-Downloader.lnk") ` -ProcessName "Real-Debrid-Downloader" # 18. WINDOWS EINSTELLUNGEN Write-Host "" Write-Host "[18/$totalSteps] Windows Einstellungen..." -ForegroundColor Yellow # IE Enhanced Security Configuration deaktivieren Write-Host " IE Enhanced Security deaktivieren..." -ForegroundColor Gray $ieAdminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}" $ieUserKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}" if (Test-Path $ieAdminKey) { Set-ItemProperty -Path $ieAdminKey -Name "IsInstalled" -Value 0 -Type DWord -Force } if (Test-Path $ieUserKey) { Set-ItemProperty -Path $ieUserKey -Name "IsInstalled" -Value 0 -Type DWord -Force } # Taskansicht-Schaltflaeche ausblenden Write-Host " Taskansicht-Button ausblenden..." -ForegroundColor Gray Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Value 0 -Type DWord -Force # Suchfeld ausblenden Write-Host " Suchfeld ausblenden..." -ForegroundColor Gray if (-not (Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search")) { New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" -Force | Out-Null } Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" -Name "SearchboxTaskbarMode" -Value 0 -Type DWord -Force # Desktop kleine Symbole Write-Host " Desktop auf kleine Symbole..." -ForegroundColor Gray $desktopRegPath = "HKCU:\SOFTWARE\Microsoft\Windows\Shell\Bags\1\Desktop" if (-not (Test-Path $desktopRegPath)) { New-Item -Path $desktopRegPath -Force | Out-Null } Set-ItemProperty -Path $desktopRegPath -Name "IconSize" -Value 32 -Type DWord -Force Set-ItemProperty -Path $desktopRegPath -Name "Mode" -Value 1 -Type DWord -Force Set-ItemProperty -Path $desktopRegPath -Name "LogicalViewMode" -Value 3 -Type DWord -Force # Windows Update dauerhaft deaktivieren Write-Host " Windows Update deaktivieren..." -ForegroundColor Gray # Update-Service stoppen und auf "Deaktiviert" setzen Stop-Service -Name "wuauserv" -Force -ErrorAction SilentlyContinue Set-Service -Name "wuauserv" -StartupType Disabled -ErrorAction SilentlyContinue # Orchestrator-Service (plant Updates im Hintergrund) Stop-Service -Name "UsoSvc" -Force -ErrorAction SilentlyContinue Set-Service -Name "UsoSvc" -StartupType Disabled -ErrorAction SilentlyContinue # BITS (Background Intelligent Transfer Service - laedt Updates runter) Stop-Service -Name "BITS" -Force -ErrorAction SilentlyContinue Set-Service -Name "BITS" -StartupType Disabled -ErrorAction SilentlyContinue # Registry: Automatische Updates komplett deaktivieren $wuRegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" if (-not (Test-Path $wuRegPath)) { New-Item -Path $wuRegPath -Force | Out-Null } # NoAutoUpdate = 1 → Keine automatischen Updates Set-ItemProperty -Path $wuRegPath -Name "NoAutoUpdate" -Value 1 -Type DWord -Force # AUOptions = 1 → Nie nach Updates suchen Set-ItemProperty -Path $wuRegPath -Name "AUOptions" -Value 1 -Type DWord -Force Write-Host " Windows Update deaktiviert!" -ForegroundColor Green # Energiesparplan auf Hoechstleistung setzen Write-Host " Energiesparplan auf Hoechstleistung..." -ForegroundColor Gray powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c Write-Host " Hoechstleistung aktiviert!" -ForegroundColor Green # Explorer neu starten damit alle Einstellungen sofort wirksam werden Write-Host " Explorer wird neu gestartet..." -ForegroundColor Gray Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 Start-Process "explorer.exe" Write-Host " Windows Einstellungen angepasst!" -ForegroundColor Green # CLEANUP Write-Host "" Write-Host "Raeume auf..." -ForegroundColor Gray Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue Write-Host "" Write-Host "========================================" -ForegroundColor Green Write-Host " FERTIG! Alle Programme installiert." -ForegroundColor Green Write-Host "========================================" -ForegroundColor Green Write-Host "" Write-Host "Druecke eine Taste zum Beenden..." $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-Null