Merhaba Engin, Microsoft Q&A topluluğuna gönderi yaptığınız için teşekkür ederiz.
Bunun temel nedeni, Windows kurulumunun WinPE veya OOBE aşamalarında %windir% veya %ProgramFiles% gibi standart ortam değişkenlerinin henüz tam olarak başlatılmamış olmasıdır. Ayrıca kurulum ortamında sistem X:\ geçici sürücüsü üzerinden çalıştığı için, bu değişkenler asıl hedef sürücüyü (genellikle C:) düzgün şekilde bulamayabilir.
Windows katılımsız kurulumlarında programları ve betikleri yüklemek için en sağlıklı yöntem SetupComplete.cmd kullanmaktır. Bu dosya, Windows kurulumu tamamlandıktan sonra, ancak kullanıcı masaüstünü görmeden hemen önce en yüksek "SYSTEM" yetkileriyle çalışır.
Dosyalarınızı $OEM$ yapısı içinde tam olarak şu yola yerleştirmelisiniz:
$OEM$$$\Setup\Scripts\SetupComplete.cmd
Betiğinizin (bat) içerisinde %windir% yerine, o anki betiğin kendi bulunduğu klasör yolunu dinamik olarak tanımlayan %~dp0 parametresini kullanmalısınız. Bu parametre, sürücü harfi ne olursa olsun hatasız çalışır.
Örneğin, SetupComplete.cmd dosyanız ile kuracağınız program aynı klasördeyse betiğinizi şu şekilde yazabilirsiniz:
@echo off
start /wait %~dp0programadi.exe /S
Eğer dosyalarınızı $OEM$$1 klasörüne kopyaladıysanız (bu klasör dosyaları hedef işletim sistemi diskinin ana dizinine, yani doğrudan *C:* kök dizinine atar), işletim sisteminin hangi harfte kurulduğundan emin olmak için daha güvenilir olan %SystemDrive% veya %SystemRoot% değişkenlerini kullanmanız gerekir.
Örneğin:
@echo off
start /wait %SystemDrive%\Programlar\programadi.exe /quiet
Bu adımların temeli hakkında daha detaylı bilgi için Microsoft Learn üzerindeki resmi dokümantasyonları inceleyebilirsiniz:
- Windows Kurulumuna Özel Komut Dosyası Ekleme: https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/add-a-custom-script-to-windows-setup
- Dağıtım Paylaşımları ve OEM Klasörlerine Genel Bakış: https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/distribution-shares-and-configuration-sets-overview