# BaykalSoft Kurulum Scripti - Menü + Basit İlerleme + Tam Sessiz (Redirect Hatası Giderildi) Clear-Host Write-Host "=== BaykalSoft Hızlı Kurulum ===" -ForegroundColor Cyan Write-Host "1 - kucukuyg klasöründeki tüm .exe/.msi'leri kur" -ForegroundColor Yellow Write-Host "2 - ortauyg klasöründeki tüm .exe/.msi'leri kur" -ForegroundColor Yellow Write-Host "3 - buyukuyg klasöründeki tüm .exe/.msi'leri kur" -ForegroundColor Yellow Write-Host "4 - TÜM klasörleri kur" -ForegroundColor Green Write-Host "0 - Çıkış" -ForegroundColor Red Write-Host "=================================" -ForegroundColor Cyan $choice = Read-Host "Seçiminiz" $base = "https://indir.baykalsoft.com.tr" $folders = @{ "1" = "kucukuyg" "2" = "ortauyg" "3" = "buyukuyg" "4" = @("kucukuyg","ortauyg","buyukuyg") } $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } $meshPath = "C:\Program Files\Mesh Agent\MeshAgent.exe" function Get-FilesFromFolder { param($folder) $url = "$base/$folder/" try { $resp = Invoke-WebRequest -Uri $url -UseBasicParsing -Headers $headers $files = $resp.Links | Where-Object { $_.href -match '\.exe$|\.msi$' -and $_.href -notlike '*Parent*' -and $_.href -notlike '*/' } | ForEach-Object { $_.href } return $files } catch { return @() } } function Install-File { param($folder, $href) $cleanFile = $href -replace "^/$folder/", "" -replace "^/", "" $fileName = [System.Uri]::UnescapeDataString($cleanFile) $downloadUrl = "$base/$folder/$cleanFile" Write-Host "→ $fileName indiriliyor..." -ForegroundColor Cyan $out = "$env:TEMP\$fileName" try { Invoke-WebRequest -Uri $downloadUrl -OutFile $out -UseBasicParsing -Headers $headers -ErrorAction Stop } catch { Write-Host "İndirme hatası" -ForegroundColor Red; return } if ((Get-Item $out -ErrorAction SilentlyContinue).Length -lt 1MB) { Remove-Item $out -Force -ErrorAction SilentlyContinue return } Write-Host "→ $fileName kuruluyor..." -ForegroundColor Yellow # MeshAgent özel temizleme (önce mevcut varsa) if (Test-Path $meshPath) { try { & $meshPath -fulluninstall 2>&1 > $null Start-Sleep -Seconds 3 } catch {} } # Genel uninstall denemesi (sessiz) $uninstallArgs = @("-fulluninstall", "-uninstall /quiet /norestart", "/uninstall /S") foreach ($arg in $uninstallArgs) { try { & $out $arg 2>&1 > $null Start-Sleep -Seconds 2 } catch {} } # Install denemesi (sessiz) $installArgs = @("-fullinstall", "/S", "/quiet /norestart", "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-", "/SILENT") $success = $false foreach ($arg in $installArgs) { try { if ($fileName -like "*.msi") { msiexec.exe /i "`"$out`"" /quiet /norestart 2>&1 > $null } else { & $out $arg 2>&1 > $null } $success = $true break } catch {} } if (-not $success) { & $out 2>&1 > $null } Remove-Item $out -Force -ErrorAction SilentlyContinue Write-Host "→ $fileName tamamlandı ✓" -ForegroundColor Green } if ($choice -eq "0") { exit } if (-not $folders.ContainsKey($choice)) { exit } $selectedFolders = if ($choice -eq "4") { $folders["4"] } else { @($folders[$choice]) } foreach ($folder in $selectedFolders) { $hrefs = Get-FilesFromFolder $folder foreach ($href in $hrefs) { Install-File $folder $href } }