1. sayfa (Toplam 1 sayfa)

Kurulum Medyası İle .NET Framework 3.5 Kuralım (Windows11 Versiyonu)

Gönderilme zamanı: 15 Eki 2025, 15:49
gönderen TRWE_2012
Merhaba

Sordum.NET Makalesi burada :

https://www.sordum.net/18546/kurulum-me ... ment-32573

Bu makaledeki ;

Kod: Tümünü seç


@echo off
Title .NET Framework 3.5 Offline Installer
for %%I in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist "%%I:\\sources\install.wim" set setupdrv=%%I
if defined setupdrv (
echo Found drive %setupdrv%
echo Installing .NET Framework 3.5...
Dism /online /enable-feature /featurename:NetFX3 /All /Source:%setupdrv%\sources\sxs /LimitAccess
echo.
echo .NET Framework 3.5 should be installed
echo.
) else (
echo No installation media found!
echo Insert DVD or USB flash drive and run this file once again. 
echo.
)
pause


Bu .bat dosyası çok eski (ha çalışır onda sorun yok) ama neden bunun "Modern Windows11-10 sistemlerine göre bir PS1 betik versiyonu olmasın dedim ve bunu kodladım ve gerçek sistem üzerinde denedim.

EKRAN GÖRÜNTÜSÜ : (Sistem : Windows 11.24H2.6899 x64 Home TR) :
Resim
Ekran görüntüsünde ;

Mesaj doğrudur. Script artık sorunsuz çalışıyor ama ortam da henüz bir Windows kurulum medyası (USB veya mount edilmiş ISO) yok.

Script’in mantığı şu:

Sistem üzerindeki tüm sürücüler taranıyor (Get-PSDrive -PSProvider FileSystem).
Her sürücüde sources\install.wim veya install.esd dosyaları aranıyor.

Bulunamazsa script böyle bir bilgilendirme mesajı çıkartıyor kullanıcının önüne :

Kod: Tümünü seç

No Windows installation media found!
Insert USB or mount ISO and run this script again.
Yani “hata” değil, bilgilendirme mesajıdır. Script doğru çalışıyor ama kurulum medyası bağlanmamış.

Sizlerin yapması gereken işlemler

ISO kullanıyorsanız sağ tık → Mount / Bağla → sanal sürücü oluşacak, script bunu tespit edecek.
USB kullanıyorsanız script otomatik olarak takılı sürücüyü bulacak.

Betiği yeniden "YÖNETİCİ MODUNDA" çalıştırdığınızda .NET Framework 3.5 kurulumu başlayacak.

Betiğin Kısa Özet Açıklaması :

Admin Kontrolü

Betik, yönetici olarak çalıştırılıp çalıştırılmadığını kontrol eder. Yönetici değilse, otomatik olarak yönetici yetkisiyle yeniden açılır. Bu, DISM ile .NET 3.5 kurulumunun sorunsuz yapılabilmesi için zorunludur.

Pencere Başlığı

PowerShell penceresinin başlığı .NET Framework 3.5 Offline Installer olarak ayarlanır. Kullanıcı hangi betiğin çalıştığını hemen görür.

Disk Tespiti (burası önemli) :

Betik,

Kod: Tümünü seç

Get-PSDrive -PSProvider FileSystem
komutuyla sistemdeki tüm dosya sistemlerini (USB, mount edilmiş ISO, HDD/SSD) tarar.

Kurulum Medyası Kontrolü

Her sürücüde sources\install.wim veya sources\install.esd dosyalarının varlığı kontrol edilir. Bu dosyalar Windows kurulum medyasının temel parçalarıdır.

SXS Klasörü Kontrolü

Eğer sources\sxs klasörü yoksa betik kullanıcıyı uyarır ve kurulum durur. Offline kurulum için SXS klasörü gereklidir.

Kurulum Başlatma

DISM (Dism.exe) komutu ile .NET Framework 3.5 etkinleştirilir. Parametreler:

Kod: Tümünü seç

/Online /Enable-Feature /FeatureName:NetFX3 /All /Source:<medya yolu> /LimitAccess /Quiet /NoRestart
Çıktı ve Hata Kontrolü

Kurulum başarılıysa yeşil mesaj, başarısızsa hata kodu ve uyarılar gösterilir.

Bekletme

Kod: Tümünü seç

Read-Host "Press Enter to exit"
ile kullanıcı enter’a basana kadar pencere açık kalır.

KOD İÇERİĞİ :

Kod: Tümünü seç

# .NET Framework 3.5 Offline Installer - ISO ve USB Tespiti ile Tam Otomatik
# PowerShell 10/11 uyumlu, Test-Path hatası düzeltilmiş

# Admin yetkisi kontrolü
If (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Warning "Bu script yönetici olarak çalıştırılmalı!"
    Start-Process powershell "-ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
    Exit
}

$host.UI.RawUI.WindowTitle = ".NET Framework 3.5 Offline Installer"

# Tüm dosya sistemlerini al
$drives = Get-PSDrive -PSProvider FileSystem | Select-Object -ExpandProperty Root

$setupDrive = $null

foreach ($d in $drives) {
    if ((Test-Path "${d}sources\install.wim") -or (Test-Path "${d}sources\install.esd")) {
        $setupDrive = $d.TrimEnd('\')  # son '\' karakterini kaldır
        break
    }
}

if ($setupDrive) {
    Write-Host "Found Windows installation media on $setupDrive" -ForegroundColor Green
    $sourcePath = "$setupDrive\sources\sxs"
    
    if (-Not (Test-Path $sourcePath)) {
        Write-Host "SXS klasörü bulunamadı: $sourcePath" -ForegroundColor Red
        Write-Host "Lütfen doğru Windows kurulum medyasını kullanın." -ForegroundColor Yellow
        Read-Host "Press Enter to exit"
        Exit
    }

    Write-Host "Installing .NET Framework 3.5..." -ForegroundColor Cyan
    $dism = Start-Process Dism.exe -ArgumentList "/Online /Enable-Feature /FeatureName:NetFX3 /All /Source:$sourcePath /LimitAccess /Quiet /NoRestart" -Wait -PassThru

    if ($dism.ExitCode -eq 0) {
        Write-Host ".NET Framework 3.5 başarıyla yüklendi!" -ForegroundColor Green
    } else {
        Write-Host "Kurulum tamamlanamadı. Hata kodu: $($dism.ExitCode)" -ForegroundColor Red
        Write-Host "Lütfen kaynak medyayı ve sistem durumunu kontrol edin." -ForegroundColor Yellow
    }

} else {
    Write-Host "No Windows installation media found!" -ForegroundColor Red
    Write-Host "Insert USB or mount ISO and run this script again." -ForegroundColor Yellow
}

Read-Host "Press Enter to exit"
Güle güle kullanın