Compare commits

...

12 Commits
v1.0.0 ... main

Author SHA1 Message Date
a01dbb892e docs: README aktualisiert — FFmpeg-Quelle + .mhu/.mdd + Changelog
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:05:15 +02:00
86eb0648c9 feat: FFmpeg-Download von gyan.dev auf Gitea umgezogen (schneller)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 12:56:37 +02:00
9339bda3e2 feat: .mhu + .mdd Data-Files vom jeweiligen App-Release auf Desktop laden
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 11:23:26 +02:00
71e4ec005e feat: Desktop-Ordner umbenennen — Downloader Fertig/Unfertig + Entpackt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 18:10:14 +01:00
82c6c2dce9 fix: JD backup import crash when running as EXE
$MyInvocation.MyCommand.Path is NULL in ps2exe compiled scripts,
causing Split-Path/Join-Path/Test-Path to throw errors.
Now checks for NULL before using the path and falls through
to Gitea download.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:41:31 +01:00
2b4fab9e46 chore: remove old exe, new VServerSetup.exe in v2.0.0 release
Built with ps2exe from current VServerSetup.ps1.
Old VServerSetup-online-console.exe removed from repo.
New exe available as release download.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:22:24 +01:00
3bfdf2a653 feat: migrate all downloads from streamerware.de to Gitea
All custom tools now download from git.24-music.de releases:
- Habbo Launcher → Habbo-Launcher repo
- JDownloader installer + backup → JDownloader-Setup repo
- File-Uploader → File-Uploader repo
- Scripte → xabbo-scripts repo
- .NET 6.0/8.0 runtimes → dotnet-runtimes repo
- G-Earth was already on Gitea

Zero streamerware.de dependencies remaining.
Added Get-Gitea-Latest-Asset helper function for cleaner code.
Updated README with all Gitea repo links.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:01:47 +01:00
9cd9581563 feat: G-Earth now downloads latest release from Gitea
Fetches newest .rar from git.24-music.de/Administrator/G-Earth,
extracts to temp dir, then moves to Desktop\G-Earth with a
consistent folder name regardless of version.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:52:18 +01:00
0c99ecf248 docs: update README with all current features
Add Multi-Hoster-Upload, Real-Debrid-Downloader, Gitea sources,
Windows Update disable, high performance power plan.
Mark old exe as outdated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:48:38 +01:00
9ae23b9dde feat: set power plan to high performance
Uses built-in GUID 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
to switch from balanced to high performance.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:37:34 +01:00
b8833f2897 feat: disable Windows Update permanently (services + registry policy)
Stops and disables wuauserv, UsoSvc, and BITS services.
Sets NoAutoUpdate and AUOptions registry policies to prevent
automatic and manual update checks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:36:41 +01:00
c54df9162d fix: complete script overhaul - JD blocking bug, TLS, backup import, Gitea apps
Critical fixes:
- JDownloader no longer blocks script (use polling instead of -Wait)
- Force TLS 1.2 for HTTPS downloads on older servers
- JD backup import uses marker file instead of cfg/ check (was always skipped)
- Explorer restart after Windows settings for immediate effect

New features:
- Twitch VOD Manager, Multi-Hoster-Upload, Real-Debrid-Downloader from Gitea
- Install-Gitea-App helper function (auto-fetches latest release)
- Unrar-File helper function (DRY)

Cleanup:
- Consistent step numbering via $totalSteps variable
- WinRAR path as global variable
- Gitea WebClient with User-Agent header
- ReadKey pause at script end
- Cleaner formatting throughout

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:32:38 +01:00
4 changed files with 389 additions and 166 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
# Build artifacts # Build artifacts
*.exe *.exe
!VServerSetup-online-console.exe

View File

@ -1,27 +1,30 @@
# VServer Setup # VServer Setup
Automatischer Windows VServer Setup Installer. Installiert alle benoetigten Programme und Konfigurationen auf einem frischen Windows Server. Automatischer Windows VServer Setup Installer. Installiert alle benoetigten Programme und Konfigurationen auf einem frischen Windows Server 2022.
Alle Downloads kommen von der eigenen Gitea-Instanz (git.24-music.de) oder offiziellen Quellen — keine Abhaengigkeit von streamerware.de mehr.
## Was wird installiert? ## Was wird installiert?
| # | Programm | Quelle | | # | Programm | Quelle |
|---|----------|--------| |---|----------|--------|
| 1 | Python 3.12.4 | python.org | | 1 | Python 3.12.4 | python.org |
| 2 | FFmpeg (+ PATH) | gyan.dev | | 2 | FFmpeg (+ PATH) | Gitea: ffmpeg |
| 3 | WinRAR | win-rar.com | | 3 | WinRAR | win-rar.com |
| 4 | G-Earth | streamerware.de | | 4 | G-Earth | Gitea: G-Earth |
| 5 | VLC Media Player | ftp.fau.de | | 5 | VLC Media Player | ftp.fau.de |
| 6 | Java 8 (Temurin) | GitHub/Adoptium | | 6 | Java 8 (Temurin) | GitHub/Adoptium |
| 7 | .NET Framework 4.8 | Microsoft | | 7 | .NET Framework 4.8 | Microsoft |
| 8 | .NET 6.0 Desktop Runtime | streamerware.de | | 8 | .NET 6.0 Desktop Runtime | Gitea: dotnet-runtimes |
| 9 | .NET 8.0 Desktop Runtime | streamerware.de | | 9 | .NET 8.0 Desktop Runtime | Gitea: dotnet-runtimes |
| 10 | Google Chrome | Google | | 10 | Google Chrome | Google |
| 11 | Habbo Launcher | streamerware.de | | 11 | Habbo Launcher | Gitea: Habbo-Launcher |
| 12 | JDownloader 2 + Backup | streamerware.de | | 12 | JDownloader 2 + Backup | Gitea: JDownloader-Setup |
| 13 | Desktop-Ordner (Fertig/Unfertig) + File-Uploader | streamerware.de | | 13 | Desktop-Ordner (Downloader Fertig/Downloader Unfertig/Entpackt) + File-Uploader | Gitea: File-Uploader |
| 14 | Scripte (Rename MKV AVI etc.) | streamerware.de | | 14 | Scripte (Rename MKV AVI etc.) | Gitea: xabbo-scripts |
| 15 | Twitch VOD Manager | streamerware.de | | 15 | Twitch VOD Manager | Gitea: Twitch-VOD-Manager |
| 16 | Windows-Settings (IE Security, Taskview, Icons) | Registry | | 16 | Multi-Hoster-Upload + `.mhu` Data-File auf Desktop | Gitea: Multi-Hoster-Upload |
| 17 | Real-Debrid-Downloader + `.mdd` Data-File auf Desktop | Gitea: real-debrid-downloader |
## Windows-Einstellungen ## Windows-Einstellungen
@ -29,6 +32,25 @@ Automatischer Windows VServer Setup Installer. Installiert alle benoetigten Prog
- Taskansicht-Button ausgeblendet - Taskansicht-Button ausgeblendet
- Suchfeld ausgeblendet - Suchfeld ausgeblendet
- Desktop kleine Symbole - Desktop kleine Symbole
- Windows Update dauerhaft deaktiviert (Services + Registry Policy)
- Energiesparplan auf Hoechstleistung
## Gitea Repos
Alle eigenen Tools werden ueber die Gitea API (latest Release) geladen:
| Repo | Inhalt |
|------|--------|
| [G-Earth](https://git.24-music.de/Administrator/G-Earth) | Habbo Packet Interceptor |
| [Habbo-Launcher](https://git.24-music.de/Administrator/Habbo-Launcher) | Habbo Hotel Launcher |
| [JDownloader-Setup](https://git.24-music.de/Administrator/JDownloader-Setup) | JD2 Installer + Config Backup |
| [File-Uploader](https://git.24-music.de/Administrator/File-Uploader) | File-Uploader fuer Desktop |
| [xabbo-scripts](https://git.24-music.de/Administrator/xabbo-scripts) | Xabbo Scripte |
| [dotnet-runtimes](https://git.24-music.de/Administrator/dotnet-runtimes) | .NET 6.0 + 8.0 Desktop Runtime |
| [ffmpeg](https://git.24-music.de/Administrator/ffmpeg) | FFmpeg Essentials Build (Mirror von gyan.dev) |
| [Twitch-VOD-Manager](https://git.24-music.de/Administrator/Twitch-VOD-Manager) | Twitch VOD Manager |
| [Multi-Hoster-Upload](https://git.24-music.de/Administrator/Multi-Hoster-Upload) | Multi-Hoster Upload Tool + `.mhu` Data-File |
| [real-debrid-downloader](https://git.24-music.de/Administrator/real-debrid-downloader) | Real-Debrid Downloader + `.mdd` Data-File |
## Benutzung ## Benutzung
@ -38,11 +60,37 @@ Automatischer Windows VServer Setup Installer. Installiert alle benoetigten Prog
.\VServerSetup.ps1 .\VServerSetup.ps1
``` ```
### Kompilierte EXE
Die `VServerSetup-online-console.exe` kann direkt auf dem Server ausgefuehrt werden (als Admin).
## Dateien ## Dateien
- `VServerSetup.ps1` - Hauptscript (Quellcode) - `VServerSetup.ps1` - Hauptscript (Quellcode)
- `jdownloader-backup.zip` - JDownloader 2 Konfiguration/Accounts - `jdownloader-backup.zip` - JDownloader 2 Konfiguration/Accounts (auch auf Gitea)
- `VServerSetup-online-console.exe` - Kompilierte Version
## Changelog
### v2.3.0
- FFmpeg-Download von gyan.dev auf Gitea umgezogen (gyan.dev war arsch langsam)
- Neues Repo `Administrator/ffmpeg` als Mirror
- Bei Updates: einfach neues Release mit .zip-Asset im ffmpeg-Repo hochladen
### v2.2.0
- `Multi-Hoster-Upload.mhu` wird vom Multi-Hoster-Upload Release geladen und auf Desktop gepackt
- `Multi-Debrid-Downloader.mdd` wird vom real-debrid-downloader Release geladen und auf Desktop gepackt
- Neuer Helper `Copy-Gitea-DataFile-To-Desktop`
- Skip-Logik wenn Data-File schon auf Desktop liegt
### v2.1.0
- Desktop-Ordner umbenannt: "Fertig" → "Downloader Fertig", "Unfertig" → "Downloader Unfertig"
- Neuer Ordner "Entpackt"
- JD Backup Import Crash beim Ausfuehren als EXE behoben
### v2.0.0
- Komplette Migration auf Gitea (keine streamerware.de Abhaengigkeit mehr)
- Neue Tools: Multi-Hoster-Upload, Real-Debrid-Downloader, Twitch VOD Manager (Gitea)
- Neue Repos: Habbo-Launcher, File-Uploader, JDownloader-Setup, dotnet-runtimes
- JDownloader blockiert das Setup nicht mehr (Polling statt -Wait)
- TLS 1.2 erzwungen
- JD-Backup Import zuverlaessig (Marker-Datei)
- Explorer-Neustart nach Windows-Einstellungen
- Windows Update dauerhaft deaktiviert
- Energiesparplan auf Hoechstleistung
- Helper-Funktionen (Get-Gitea-Latest-Asset, Unrar-File, Install-Gitea-App)

Binary file not shown.

View File

@ -2,7 +2,14 @@
$ErrorActionPreference = "Continue" $ErrorActionPreference = "Continue"
$ProgressPreference = "SilentlyContinue" $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" $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 New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
Write-Host "========================================" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan
@ -12,7 +19,8 @@ Write-Host ""
function Download-File { function Download-File {
param($Url, $Output) param($Url, $Output)
Write-Host " Downloading: $Output" -ForegroundColor Gray $filename = Split-Path $Output -Leaf
Write-Host " Downloading: $filename" -ForegroundColor Gray
try { try {
$webClient = New-Object System.Net.WebClient $webClient = New-Object System.Net.WebClient
$webClient.Headers.Add("User-Agent", "Mozilla/5.0") $webClient.Headers.Add("User-Agent", "Mozilla/5.0")
@ -24,8 +32,88 @@ function Download-File {
} }
} }
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 Get-Gitea-Latest-Asset {
param($Repo, $Filter)
$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)[0]
$asset = $release.assets | Where-Object { $_.name -like $Filter -and $_.name -notlike "*.blockmap" } | Select-Object -First 1
if ($asset) {
Write-Host " Version: $($release.tag_name)" -ForegroundColor Gray
}
return $asset
}
function Copy-Gitea-DataFile-To-Desktop {
param($Repo, $Filter)
try {
$asset = Get-Gitea-Latest-Asset -Repo $Repo -Filter $Filter
if (-not $asset) {
Write-Host " WARNUNG: Kein Asset '$Filter' im Release gefunden" -ForegroundColor Yellow
return
}
$destPath = Join-Path $desktopPath $asset.name
if (Test-Path $destPath) {
Write-Host " $($asset.name) bereits vorhanden - ueberspringe." -ForegroundColor Gray
return
}
if (Download-File -Url $asset.browser_download_url -Output $destPath) {
Write-Host " $($asset.name) auf Desktop!" -ForegroundColor Green
}
} catch {
Write-Host " FEHLER beim Laden der Data-Datei: $_" -ForegroundColor Red
}
}
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
$asset = Get-Gitea-Latest-Asset -Repo $Repo -Filter "*Setup*.exe"
if ($asset) {
$installer = "$tempDir\$($asset.name)"
if (Download-File -Url $asset.browser_download_url -Output $installer) {
Write-Host " Installiere $Name (silent)..." -ForegroundColor Gray
Start-Process -FilePath $installer -ArgumentList "/S" -Wait
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 # 1. PYTHON
Write-Host "[1/12] Python..." -ForegroundColor Yellow Write-Host ""
Write-Host "[1/$totalSteps] Python..." -ForegroundColor Yellow
$pythonInstalled = (Get-Command python -ErrorAction SilentlyContinue) -or (Test-Path "C:\Program Files\Python*\python.exe") $pythonInstalled = (Get-Command python -ErrorAction SilentlyContinue) -or (Test-Path "C:\Program Files\Python*\python.exe")
if ($pythonInstalled) { if ($pythonInstalled) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
@ -40,13 +128,14 @@ if ($pythonInstalled) {
} }
# 2. FFMPEG # 2. FFMPEG
Write-Host "[2/12] FFmpeg..." -ForegroundColor Yellow Write-Host ""
Write-Host "[2/$totalSteps] FFmpeg..." -ForegroundColor Yellow
if (Test-Path "C:\ffmpeg\bin\ffmpeg.exe") { if (Test-Path "C:\ffmpeg\bin\ffmpeg.exe") {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} else { } else {
$ffmpegUrl = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip"
$ffmpegZip = "$tempDir\ffmpeg.zip" $ffmpegZip = "$tempDir\ffmpeg.zip"
if (Download-File -Url $ffmpegUrl -Output $ffmpegZip) { $ffmpegAsset = Get-Gitea-Latest-Asset -Repo "ffmpeg" -Filter "*.zip"
if ($ffmpegAsset -and (Download-File -Url $ffmpegAsset.browser_download_url -Output $ffmpegZip)) {
Write-Host " Entpacke FFmpeg nach C:\ffmpeg..." -ForegroundColor Gray Write-Host " Entpacke FFmpeg nach C:\ffmpeg..." -ForegroundColor Gray
if (Test-Path "C:\ffmpeg") { Remove-Item -Path "C:\ffmpeg" -Recurse -Force } if (Test-Path "C:\ffmpeg") { Remove-Item -Path "C:\ffmpeg" -Recurse -Force }
Expand-Archive -Path $ffmpegZip -DestinationPath $tempDir -Force Expand-Archive -Path $ffmpegZip -DestinationPath $tempDir -Force
@ -65,8 +154,9 @@ if ($currentPath -notlike "*C:\ffmpeg\bin*") {
} }
# 3. WINRAR # 3. WINRAR
Write-Host "[3/12] WinRAR..." -ForegroundColor Yellow Write-Host ""
if (Test-Path "C:\Program Files\WinRAR\WinRAR.exe") { Write-Host "[3/$totalSteps] WinRAR..." -ForegroundColor Yellow
if (Test-Path $winrarPath) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} else { } else {
$winrarUrl = "https://www.win-rar.com/fileadmin/winrar-versions/winrar/winrar-x64-701.exe" $winrarUrl = "https://www.win-rar.com/fileadmin/winrar-versions/winrar/winrar-x64-701.exe"
@ -78,28 +168,50 @@ if (Test-Path "C:\Program Files\WinRAR\WinRAR.exe") {
} }
} }
# 4. G-EARTH (nach WinRAR, damit wir entpacken koennen) # 4. G-EARTH (von Gitea - nach WinRAR, damit wir entpacken koennen)
Write-Host "[4/12] G-Earth..." -ForegroundColor Yellow Write-Host ""
$gearthPath = "$([Environment]::GetFolderPath('Desktop'))\G-Earth" Write-Host "[4/$totalSteps] G-Earth..." -ForegroundColor Yellow
if (Test-Path $gearthPath) { if (Test-Path "$desktopPath\G-Earth") {
Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray
} else { } else {
$gearthUrl = "https://streamerware.de/G-earth.rar" try {
$gearthRar = "$tempDir\G-earth.rar" Write-Host " Hole neueste Version von Gitea..." -ForegroundColor Gray
if (Download-File -Url $gearthUrl -Output $gearthRar) { $releaseApi = "https://git.24-music.de/api/v1/repos/Administrator/G-Earth/releases?limit=1"
Write-Host " Entpacke G-Earth auf Desktop..." -ForegroundColor Gray $wc = New-Object System.Net.WebClient
$winrarPath = "C:\Program Files\WinRAR\WinRAR.exe" $wc.Headers.Add("User-Agent", "Mozilla/5.0")
if (Test-Path $winrarPath) { $release = ($wc.DownloadString($releaseApi) | ConvertFrom-Json)
Start-Process -FilePath $winrarPath -ArgumentList "x", "-ibck", "-o+", $gearthRar, "$([Environment]::GetFolderPath('Desktop'))\" -Wait $rarAsset = $release[0].assets | Where-Object { $_.name -like "*.rar" } | Select-Object -First 1
Write-Host " G-Earth installiert!" -ForegroundColor Green 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 { } else {
Write-Host " FEHLER: WinRAR nicht gefunden" -ForegroundColor Red Write-Host " FEHLER: Kein .rar-Asset im Release gefunden" -ForegroundColor Red
} }
} catch {
Write-Host " FEHLER beim Abrufen der Gitea-Release: $_" -ForegroundColor Red
} }
} }
# 5. VLC # 5. VLC
Write-Host "[5/12] VLC..." -ForegroundColor Yellow Write-Host ""
Write-Host "[5/$totalSteps] VLC..." -ForegroundColor Yellow
if (Test-Path "C:\Program Files\VideoLAN\VLC\vlc.exe") { if (Test-Path "C:\Program Files\VideoLAN\VLC\vlc.exe") {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} else { } else {
@ -112,8 +224,9 @@ if (Test-Path "C:\Program Files\VideoLAN\VLC\vlc.exe") {
} }
} }
# 5. JAVA 8 # 6. JAVA 8
Write-Host "[6/12] Java 8..." -ForegroundColor Yellow 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) $javaInstalled = (Test-Path "C:\Program Files\Java\*") -or (Test-Path "C:\Program Files\Eclipse Adoptium\*") -or (Get-Command java -ErrorAction SilentlyContinue)
if ($javaInstalled) { if ($javaInstalled) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
@ -127,8 +240,9 @@ if ($javaInstalled) {
} }
} }
# 6. .NET FRAMEWORK 4.8 # 7. .NET FRAMEWORK 4.8
Write-Host "[7/13] .NET Framework 4.8..." -ForegroundColor Yellow 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 $netInstalled = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" -ErrorAction SilentlyContinue).Release -ge 528040
if ($netInstalled) { if ($netInstalled) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
@ -142,15 +256,16 @@ if ($netInstalled) {
} }
} }
# 7. .NET 6.0 DESKTOP RUNTIME # 8. .NET 6.0 DESKTOP RUNTIME
Write-Host "[8/13] .NET 6.0 Desktop Runtime..." -ForegroundColor Yellow 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.*") $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) { if ($net6Installed) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} else { } else {
$net6Url = "https://streamerware.de/windowsdesktop-runtime-6.0.36-win-x64.exe"
$net6Installer = "$tempDir\dotnet6-desktop.exe" $net6Installer = "$tempDir\dotnet6-desktop.exe"
if (Download-File -Url $net6Url -Output $net6Installer) { $net6Asset = Get-Gitea-Latest-Asset -Repo "dotnet-runtimes" -Filter "*6.0*"
if ($net6Asset -and (Download-File -Url $net6Asset.browser_download_url -Output $net6Installer)) {
Write-Host " Installiere .NET 6.0 Desktop Runtime (silent)..." -ForegroundColor Gray Write-Host " Installiere .NET 6.0 Desktop Runtime (silent)..." -ForegroundColor Gray
Start-Process -FilePath $net6Installer -ArgumentList "/install", "/quiet", "/norestart" -Wait Start-Process -FilePath $net6Installer -ArgumentList "/install", "/quiet", "/norestart" -Wait
Write-Host " .NET 6.0 Desktop Runtime installiert!" -ForegroundColor Green Write-Host " .NET 6.0 Desktop Runtime installiert!" -ForegroundColor Green
@ -158,14 +273,15 @@ if ($net6Installed) {
} }
# 9. .NET 8.0 DESKTOP RUNTIME # 9. .NET 8.0 DESKTOP RUNTIME
Write-Host "[9/16] .NET 8.0 Desktop Runtime..." -ForegroundColor Yellow 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.*") $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) { if ($net8Installed) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} else { } else {
$net8Url = "https://streamerware.de/windowsdesktop-runtime-8.0.23-win-x64.exe"
$net8Installer = "$tempDir\dotnet8-desktop.exe" $net8Installer = "$tempDir\dotnet8-desktop.exe"
if (Download-File -Url $net8Url -Output $net8Installer) { $net8Asset = Get-Gitea-Latest-Asset -Repo "dotnet-runtimes" -Filter "*8.0*"
if ($net8Asset -and (Download-File -Url $net8Asset.browser_download_url -Output $net8Installer)) {
Write-Host " Installiere .NET 8.0 Desktop Runtime (silent)..." -ForegroundColor Gray Write-Host " Installiere .NET 8.0 Desktop Runtime (silent)..." -ForegroundColor Gray
Start-Process -FilePath $net8Installer -ArgumentList "/install", "/quiet", "/norestart" -Wait Start-Process -FilePath $net8Installer -ArgumentList "/install", "/quiet", "/norestart" -Wait
Write-Host " .NET 8.0 Desktop Runtime installiert!" -ForegroundColor Green Write-Host " .NET 8.0 Desktop Runtime installiert!" -ForegroundColor Green
@ -173,7 +289,8 @@ if ($net8Installed) {
} }
# 10. GOOGLE CHROME # 10. GOOGLE CHROME
Write-Host "[10/16] Google Chrome..." -ForegroundColor Yellow 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") $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) { if ($chromeInstalled) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
@ -187,159 +304,184 @@ if ($chromeInstalled) {
} }
} }
# 10. HABBO LAUNCHER # 11. HABBO LAUNCHER (von Gitea)
Write-Host "[11/16] Habbo Launcher..." -ForegroundColor Yellow Install-Gitea-App -Name "Habbo Launcher" -Repo "Habbo-Launcher" `
$habboInstalled = (Test-Path "$env:LOCALAPPDATA\Programs\habbo-launcher\Habbo Launcher.exe") -or (Test-Path "C:\Program Files\Habbo Launcher\*") -or (Test-Path "$env:USERPROFILE\AppData\Local\Programs\habbo-launcher\Habbo Launcher.exe") -or (Get-ChildItem "C:\Users\*\AppData\Local\Programs\habbo-launcher\Habbo Launcher.exe" -ErrorAction SilentlyContinue) -or (Test-Path "$([Environment]::GetFolderPath('Desktop'))\Habbo Launcher.lnk") -StepNum 11 `
if ($habboInstalled) { -DetectPaths @("$env:LOCALAPPDATA\Programs\habbo-launcher\Habbo Launcher.exe", "C:\Program Files\Habbo Launcher\*") `
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray -ProcessName "Habbo Launcher"
} 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
Write-Host " Habbo Launcher installiert!" -ForegroundColor Green
}
}
# 8. JDOWNLOADER (von Website laden) # 12. JDOWNLOADER
Write-Host "[12/16] JDownloader..." -ForegroundColor Yellow Write-Host ""
$jdPath = "$env:LOCALAPPDATA\JDownloader 2.0" Write-Host "[12/$totalSteps] JDownloader..." -ForegroundColor Yellow
$jdInstalled = (Test-Path "$jdPath\JDownloader2.exe") -or (Test-Path "C:\Program Files\JDownloader\JDownloader2.exe") $jdDetectPaths = @(
if ($jdInstalled) {
Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} else {
$jdUrl = "http://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
Start-Process -FilePath $jdInstaller -ArgumentList "-q" -Wait
Write-Host " JDownloader installiert!" -ForegroundColor Green
}
}
# JD2 BACKUP IMPORTIEREN (eingebettet)
$jdPaths = @(
"$env:LOCALAPPDATA\JDownloader 2.0", "$env:LOCALAPPDATA\JDownloader 2.0",
"C:\Program Files\JDownloader", "C:\Program Files\JDownloader",
"C:\Users\Administrator\AppData\Local\JDownloader 2.0" "C:\Users\Administrator\AppData\Local\JDownloader 2.0"
) )
$jdPath = $null $jdPath = $null
foreach ($p in $jdPaths) { foreach ($p in $jdDetectPaths) {
if (Test-Path $p) { $jdPath = $p; break } if (Test-Path "$p\JDownloader2.exe") { $jdPath = $p; break }
} }
# Pruefen ob Backup bereits importiert wurde (cfg Ordner existiert)
if ($jdPath -and (Test-Path "$jdPath\cfg")) { if ($jdPath) {
Write-Host " JD2-Backup bereits importiert - ueberspringe." -ForegroundColor Gray Write-Host " Bereits installiert - ueberspringe." -ForegroundColor Gray
} elseif ($jdPath) { } else {
Write-Host " Importiere JD2-Backup..." -ForegroundColor Cyan # JDownloader Installer von Gitea holen
Write-Host " Ziel: $jdPath" -ForegroundColor Gray $jdAsset = Get-Gitea-Latest-Asset -Repo "JDownloader-Setup" -Filter "*Setup*.exe"
# JD2 Backup wird als separate Datei mitgeliefert (jdownloader-backup.zip) $jdInstaller = "$tempDir\JDownloader2Setup.exe"
# oder aus dem gleichen Verzeichnis wie das Script geladen if ($jdAsset -and (Download-File -Url $jdAsset.browser_download_url -Output $jdInstaller)) {
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path Write-Host " Installiere JDownloader (silent)..." -ForegroundColor Gray
$backupZip = Join-Path $scriptDir "jdownloader-backup.zip" # NICHT -Wait benutzen! Der JD-Installer (install4j) startet JDownloader nach
if (-not (Test-Path $backupZip)) { # der Installation und wartet bis JD geschlossen wird. -Wait wuerde das Script
$backupZip = "$tempDir\jd2backup.zip" # blockieren bis der User JDownloader manuell schliesst.
$backupUrl = "https://streamerware.de/jdownloader-backup.zip" $jdProc = Start-Process -FilePath $jdInstaller -ArgumentList "-q" -PassThru
Download-File -Url $backupUrl -Output $backupZip | Out-Null
# 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
}
} }
try { }
Expand-Archive -Path $backupZip -DestinationPath $jdPath -Force
Write-Host " JD2-Settings importiert!" -ForegroundColor Green # JD2 BACKUP IMPORTIEREN
} catch { # Marker-Datei statt cfg/-Check: JDownloader erstellt cfg/ beim ersten Start mit
Write-Host " FEHLER beim Import: $_" -ForegroundColor Red # 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
# Backup zuerst lokal suchen, dann von Gitea laden
$backupZip = $null
$scriptPath = $MyInvocation.MyCommand.Path
if ($scriptPath) {
$localZip = Join-Path (Split-Path -Parent $scriptPath) "jdownloader-backup.zip"
if (Test-Path $localZip) { $backupZip = $localZip }
}
if (-not $backupZip) {
Write-Host " Lade Backup von Gitea..." -ForegroundColor Gray
$backupZip = "$tempDir\jdownloader-backup.zip"
try {
$backupAsset = Get-Gitea-Latest-Asset -Repo "JDownloader-Setup" -Filter "*backup*.zip"
if ($backupAsset) {
Download-File -Url $backupAsset.browser_download_url -Output $backupZip | Out-Null
}
} catch {
Write-Host " WARNUNG: Backup konnte nicht von Gitea geladen werden" -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 { } else {
Write-Host " JDownloader-Ordner nicht gefunden - Backup uebersprungen" -ForegroundColor Yellow Write-Host " JDownloader-Ordner nicht gefunden - Backup uebersprungen" -ForegroundColor Yellow
} }
# 6. FILE-UPLOADER + ORDNER # 13. DESKTOP ORDNER + FILE-UPLOADER
Write-Host "" Write-Host ""
Write-Host "[13/16] Desktop Ordner..." -ForegroundColor Yellow Write-Host "[13/$totalSteps] Desktop Ordner..." -ForegroundColor Yellow
$desktopPath = [Environment]::GetFolderPath("Desktop")
# Ordner "Fertig" und "Unfertig" erstellen (nur wenn nicht vorhanden) foreach ($folder in @("Downloader Fertig", "Downloader Unfertig", "Entpackt")) {
if (Test-Path "$desktopPath\Fertig") { if (Test-Path "$desktopPath\$folder") {
Write-Host " Ordner 'Fertig' bereits vorhanden." -ForegroundColor Gray Write-Host " Ordner '$folder' bereits vorhanden." -ForegroundColor Gray
} else { } else {
Write-Host " Erstelle Ordner 'Fertig'..." -ForegroundColor Gray Write-Host " Erstelle Ordner '$folder'..." -ForegroundColor Gray
New-Item -ItemType Directory -Force -Path "$desktopPath\Fertig" | Out-Null New-Item -ItemType Directory -Force -Path "$desktopPath\$folder" | Out-Null
} }
if (Test-Path "$desktopPath\Unfertig") {
Write-Host " Ordner 'Unfertig' bereits vorhanden." -ForegroundColor Gray
} else {
Write-Host " Erstelle Ordner 'Unfertig'..." -ForegroundColor Gray
New-Item -ItemType Directory -Force -Path "$desktopPath\Unfertig" | Out-Null
} }
# File-Uploader vom Server laden (nur wenn nicht vorhanden)
if (Test-Path "$desktopPath\File-Uploader") { if (Test-Path "$desktopPath\File-Uploader") {
Write-Host " File-Uploader bereits vorhanden - ueberspringe." -ForegroundColor Gray Write-Host " File-Uploader bereits vorhanden - ueberspringe." -ForegroundColor Gray
} else { } else {
Write-Host " Lade File-Uploader vom Server..." -ForegroundColor Gray Write-Host " Hole File-Uploader von Gitea..." -ForegroundColor Gray
$fileUploaderUrl = "https://streamerware.de/FileUploader.rar" try {
$fuAsset = Get-Gitea-Latest-Asset -Repo "File-Uploader" -Filter "*.rar"
} catch { $fuAsset = $null }
$uploaderRar = "$tempDir\FileUploader.rar" $uploaderRar = "$tempDir\FileUploader.rar"
if ($fuAsset -and (Download-File -Url $fuAsset.browser_download_url -Output $uploaderRar)) {
if (Download-File -Url $fileUploaderUrl -Output $uploaderRar) { if (Unrar-File -RarPath $uploaderRar -DestPath $desktopPath) {
try { Write-Host " File-Uploader installiert!" -ForegroundColor Green
$winrarPath = "C:\Program Files\WinRAR\WinRAR.exe"
if (Test-Path $winrarPath) {
Start-Process -FilePath $winrarPath -ArgumentList "x", "-ibck", "-o+", $uploaderRar, "$desktopPath\" -Wait
Write-Host " File-Uploader installiert!" -ForegroundColor Green
} else {
Write-Host " FEHLER: WinRAR nicht gefunden (fuer .rar Entpacken)." -ForegroundColor Red
}
} catch {
Write-Host " FEHLER beim Entpacken: $_" -ForegroundColor Red
} }
} else {
Write-Host " FEHLER: Download vom Server fehlgeschlagen." -ForegroundColor Red
} }
} }
Write-Host " Desktop Ordner erstellt!" -ForegroundColor Green # 14. SCRIPTE
# 13. SCRIPTE
Write-Host "" Write-Host ""
Write-Host "[14/16] Scripte..." -ForegroundColor Yellow Write-Host "[14/$totalSteps] Scripte..." -ForegroundColor Yellow
if (Test-Path "$desktopPath\Rename MKV AVI.py") { if (Test-Path "$desktopPath\Rename MKV AVI.py") {
Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray
} else { } else {
$scripteUrl = "https://streamerware.de/Scripte.rar" try {
$scriptAsset = Get-Gitea-Latest-Asset -Repo "xabbo-scripts" -Filter "*.rar"
} catch { $scriptAsset = $null }
$scripteRar = "$tempDir\Scripte.rar" $scripteRar = "$tempDir\Scripte.rar"
if (Download-File -Url $scripteUrl -Output $scripteRar) { if ($scriptAsset -and (Download-File -Url $scriptAsset.browser_download_url -Output $scripteRar)) {
Write-Host " Entpacke Scripte auf Desktop..." -ForegroundColor Gray Write-Host " Entpacke Scripte auf Desktop..." -ForegroundColor Gray
$winrarPath = "C:\Program Files\WinRAR\WinRAR.exe" if (Unrar-File -RarPath $scripteRar -DestPath $desktopPath) {
if (Test-Path $winrarPath) {
Start-Process -FilePath $winrarPath -ArgumentList "x", "-ibck", "-o+", $scripteRar, "$desktopPath\" -Wait
Write-Host " Scripte installiert!" -ForegroundColor Green Write-Host " Scripte installiert!" -ForegroundColor Green
} else {
Write-Host " FEHLER: WinRAR nicht gefunden" -ForegroundColor Red
} }
} }
} }
# 14. TWITCH VOD MANAGER # 15. TWITCH VOD MANAGER (von Gitea)
Write-Host "" Install-Gitea-App -Name "Twitch VOD Manager" -Repo "Twitch-VOD-Manager" `
Write-Host "[15/16] Twitch VOD Manager..." -ForegroundColor Yellow -StepNum 15 `
$twitchPath = "$desktopPath\Twitch Downloader" -DetectPaths @("$env:LOCALAPPDATA\Programs\twitch-vod-manager\Twitch VOD Manager.exe", "$desktopPath\Twitch VOD Manager.lnk") `
if (Test-Path "$twitchPath\Twitch_VOD_Manager.exe") { -ProcessName "Twitch VOD Manager"
Write-Host " Bereits vorhanden - ueberspringe." -ForegroundColor Gray
} else {
$twitchUrl = "https://streamerware.de/Twitch_VOD_Manager.zip"
$twitchZip = "$tempDir\Twitch_VOD_Manager.zip"
if (Download-File -Url $twitchUrl -Output $twitchZip) {
Write-Host " Entpacke Twitch VOD Manager auf Desktop..." -ForegroundColor Gray
Expand-Archive -Path $twitchZip -DestinationPath $desktopPath -Force
Write-Host " Twitch VOD Manager installiert!" -ForegroundColor Green
}
}
# 12. WINDOWS EINSTELLUNGEN # 16. MULTI-HOSTER-UPLOAD (von Gitea)
Write-Host "" Install-Gitea-App -Name "Multi-Hoster-Upload" -Repo "Multi-Hoster-Upload" `
Write-Host "[16/16] Windows Einstellungen..." -ForegroundColor Yellow -StepNum 16 `
-DetectPaths @("$env:LOCALAPPDATA\Programs\multi-hoster-upload\Multi-Hoster-Upload.exe", "$desktopPath\Multi-Hoster-Upload.lnk") `
-ProcessName "Multi-Hoster-Upload"
Copy-Gitea-DataFile-To-Desktop -Repo "Multi-Hoster-Upload" -Filter "*.mhu"
# IE Enhanced Security Configuration deaktivieren (fuer Administratoren und Benutzer) # 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"
Copy-Gitea-DataFile-To-Desktop -Repo "real-debrid-downloader" -Filter "*.mdd"
# 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 Write-Host " IE Enhanced Security deaktivieren..." -ForegroundColor Gray
$ieAdminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}" $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}" $ieUserKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
@ -371,6 +513,39 @@ Set-ItemProperty -Path $desktopRegPath -Name "IconSize" -Value 32 -Type DWord -F
Set-ItemProperty -Path $desktopRegPath -Name "Mode" -Value 1 -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 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 Write-Host " Windows Einstellungen angepasst!" -ForegroundColor Green
# CLEANUP # CLEANUP
@ -384,3 +559,4 @@ Write-Host " FERTIG! Alle Programme installiert." -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green Write-Host "========================================" -ForegroundColor Green
Write-Host "" Write-Host ""
Write-Host "Druecke eine Taste zum Beenden..." Write-Host "Druecke eine Taste zum Beenden..."
$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-Null