Bir sistem yöneticisi onlarca ya da yüzlerce bilgisayara aynı yazılımı kurması gerektiğinde, her makinede kurulum sihirbazına tek tek tıklamak pratik bir seçenek değildir. Bu noktada devreye "sessiz kurulum" (silent install / unattended install) parametreleri girer. Bu yazıda sessiz kurulumun ne olduğunu, hangi parametrelerin yaygın olarak kullanıldığını ve hem MSI tabanlı hem de üçüncü taraf yükleyicilerle nasıl çalışılacağını pratik bir bakışla ele alıyoruz.
Sessiz Kurulum Nedir ve Neden Kullanılır
Sessiz kurulum, bir yazılımın kurulum sihirbazındaki pencereleri, onay kutularını ve "İleri" butonlarını kullanıcıya göstermeden, komut satırı üzerinden verilen parametrelerle otomatik olarak tamamlanmasıdır. Kurulum arka planda çalışır; kullanıcı çoğu zaman bir ilerleme çubuğu bile görmeyebilir.
Bunun en belirgin avantajı zaman tasarrufudur. Tek bir bilgisayarda birkaç dakika süren bir kurulum süreci önemli görünmeyebilir, ancak yüzlerce makineye aynı yazılımı dağıtmak gerektiğinde bu süre katlanarak büyür. Sessiz kurulum parametreleri, bu süreci bir komut dosyası (script) ile otomatikleştirerek insan müdahalesini ortadan kaldırır.
Kurumsal ortamlarda bu yaklaşım özellikle önemlidir. Bir IT departmanı, yeni işe başlayan çalışanların bilgisayarlarına standart bir yazılım paketi kurmak isteyebilir; ya da mevcut bir güvenlik yaması tüm ağdaki makinelere aynı anda uygulanmak zorunda olabilir. Uzak masaüstü araçları veya yazılım dağıtım sistemleriyle birleştirildiğinde, sessiz kurulum parametreleri bu tür toplu işlemlerin temel yapı taşı haline gelir.
Ayrıca otomasyon senaryolarında (örneğin yeni bir sanal makine imajı hazırlarken) sessiz kurulum, tekrarlanabilir ve hatasız bir süreç sağlar — her seferinde aynı seçenekler aynı sırayla uygulanır, insan hatası riski azalır.
Yaygın Sessiz Kurulum Parametreleri ve Bayrakları
Windows dünyasında yükleyiciler farklı araçlarla (InnoSetup, NSIS, InstallShield, WiX gibi) oluşturulduğu için parametreler de yükleyiciye göre değişir. Yine de sık karşılaşılan bazı standart bayraklar vardır:
- /S: NSIS tabanlı yükleyicilerde sessiz kurulumu başlatan temel parametredir. Büyük/küçük harf duyarlı olabilir.
- /SILENT ve /VERYSILENT: InnoSetup tabanlı yükleyicilerde kullanılır.
/SILENTkurulum penceresini gizler ama ilerleme çubuğunu gösterebilir;/VERYSILENTise hiçbir arayüz göstermeden tamamen arka planda çalışır. - /NORESTART: Kurulum sonrası sistemin otomatik olarak yeniden başlatılmasını engeller. Toplu kurulumlarda beklenmedik yeniden başlatmaların önüne geçmek için kritiktir.
- /D: Genellikle InnoSetup yükleyicilerinde kurulum dizinini belirtmek için kullanılır (örneğin
/D=C:\Program Files\UygulamaAdi). Bu parametre genelde komut satırının en sonunda, tırnak içine alınmadan yazılmalıdır. - /COMPONENTS: Hangi bileşenlerin kurulacağını belirtmek için kullanılabilir (örneğin sadece belirli eklentiler).
- /TASKS: Kurulum sırasında işaretlenebilecek ek görevleri (masaüstü kısayolu oluşturma gibi) kontrol eder.
- /LOG: Kurulum sürecinin bir günlük dosyasına kaydedilmesini sağlar; sorun giderme için oldukça değerlidir.
Bu parametrelerin hangi yazılımda hangi biçimde çalıştığı, yükleyicinin hangi araçla paketlendiğine bağlı olarak değişir. Bu yüzden genel bir "evrensel parametre listesi" yoktur; her yazılım için doğrulama yapmak gerekir.
Windows Installer (.msi) Dosyaları için MSIEXEC Komutları
.msi uzantılı paketler Windows Installer teknolojisini kullanır ve bu paketlerle çalışmak için msiexec komut satırı aracı kullanılır. Temel sözdizimi şu şekildedir:
msiexec /i "UygulamaAdi.msi" /qn /norestart /l*v "kurulum_log.txt"
Burada:
- /i: Kurulum (install) modunu belirtir. Kaldırma için /x, idari kurulum için /a, dönüştürme (transform) uygulamak için /j gibi seçenekler de mevcuttur.
- /qn: Tamamen sessiz kurulum (no UI) anlamına gelir. /qb ise temel bir ilerleme çubuğu gösterir ama kullanıcı etkileşimi istemez.
- /norestart: MSI tabanlı kurulumlarda da yeniden başlatmayı engellemek için kullanılır.
- /l*v: Ayrıntılı (verbose) bir günlük dosyası oluşturur;
*vyerine sadece/lkullanılarak daha az ayrıntılı bir log da alınabilir.
MSI paketleri ayrıca "property" adı verilen değişkenlerle özelleştirilebilir. Örneğin lisans anahtarı veya kurulum dizini gibi bilgiler şu şekilde iletilebilir:
msiexec /i "UygulamaAdi.msi" /qn INSTALLDIR="C:\Uygulamalar\UygulamaAdi" ADDLOCAL=ALL
Hangi property'lerin desteklendiğini öğrenmek için genellikle yazılımın kendi belgelerine veya msiexec /i "UygulamaAdi.msi" /? gibi yardım komutlarına bakmak gerekir; her MSI paketi aynı property isimlerini desteklemez.
Komut Satırından Sessiz Kurulum Çalıştırma
Tek bir yazılımı sessiz kurmak için Komut İstemi (cmd) veya PowerShell üzerinden doğrudan komut çalıştırmak yeterlidir. Ancak birden fazla yazılımı art arda kurmak isteyen bir yönetici için bir batch dosyası (.bat) hazırlamak daha pratik bir yoldur.
Örnek bir batch dosyası şu şekilde görünebilir:
@echo off
echo Yazilim A kuruluyor...
"\\sunucu\yazilimlar\YazilimA_Setup.exe" /VERYSILENT /NORESTART
echo Yazilim B kuruluyor...
msiexec /i "\\sunucu\yazilimlar\YazilimB.msi" /qn /norestart
echo Tum kurulumlar tamamlandi.
PowerShell kullanmak isteyenler için ise Start-Process komutu ve -Wait parametresi, bir kurulumun bitmesini bekleyip bir sonrakine geçmeyi sağlar:
Start-Process -FilePath "YazilimA_Setup.exe" -ArgumentList "/VERYSILENT /NORESTART" -Wait
Start-Process -FilePath "msiexec.exe" -ArgumentList '/i "YazilimB.msi" /qn /norestart' -Wait
Değişken kullanımı, aynı scripti farklı makinelerde veya farklı sürümlerde tekrar kullanılabilir hale getirir. Örneğin kurulum dizinini veya dosya yolunu bir değişkende tutup script içinde referans vermek, bakım kolaylığı sağlar. Bazı kurulumlarda bir sonraki adıma geçmeden önce birkaç saniyelik bir bekleme (timeout komutu gibi) eklemek, özellikle ağ sürücülerinden kurulum yapılırken dosya kilitlenmelerini önlemeye yardımcı olabilir.
Kurulum Günlük Dosyalarıyla Sorun Giderme
Sessiz kurulum arayüz göstermediği için bir kurulumun başarılı mı yoksa başarısız mı olduğunu anlamak bazen zor olabilir. Bu yüzden günlük (log) dosyası oluşturmak neredeyse zorunlu bir alışkanlık olmalıdır.
MSI tabanlı kurulumlarda /l*v "yol\log.txt" parametresi ayrıntılı bir günlük üretir. Bu dosya içinde kurulumun hangi adımda durduğu, hangi dosyaların kopyalandığı ve varsa hata mesajları satır satır yer alır. Büyük log dosyalarında genellikle dosyanın sonuna doğru "Return Value 3" gibi ifadeler bir hatayı işaret ederken, "Return Value 1" genellikle başarılı bir işlemi gösterir — ancak bu değerlerin yorumlanması MSI işlem akışına bağlı olarak değişebileceğinden, şüpheli durumlarda yazılımın kendi belgelerine başvurmak gerekir.
NSIS veya InnoSetup tabanlı yükleyicilerde /LOG parametresi benzer bir işlev görür, ancak log dosyasının biçimi ve ayrıntı düzeyi yükleyiciden yükleyiciye farklılık gösterir.
Toplu kurulumlarda her makineden gelen log dosyalarını merkezi bir paylaşım klasöründe toplamak, sorunları geriye dönük incelemek için faydalıdır. Ancak bu dosyaların zamanla birikerek disk alanı kaplamaması için periyodik temizlik ya da dönüşümlü (rotating) bir log yönetimi planlamak da göz ardı edilmemelidir.
Farklı Yazılım Türleri Arasındaki Parametre Farklılıkları
Sessiz kurulum parametrelerinin en kafa karıştırıcı yönü, her yükleyici aracının kendi standartlarını kullanmasıdır:
- InnoSetup tabanlı yükleyiciler genellikle
/SILENT,/VERYSILENT,/NORESTARTve/DIR=gibi parametreleri destekler. - NSIS (Nullsoft Scriptable Install System) tabanlı yükleyiciler çoğunlukla
/Sparametresini kullanır; ek parametreler yazılım geliştiricisinin NSIS scriptine nasıl özelleştirme eklediğine bağlıdır. - InstallShield tabanlı yükleyiciler
/sve bir yanıt dosyası (.issuzantılı) kullanarak sessiz kurulum yapabilir; bu dosya önce normal bir kurulum sırasında/rparametresiyle kaydedilir, sonra diğer makinelerde tekrar kullanılır. - Açık kaynak yazılımlar çoğunlukla standart paket yöneticileri (örneğin Linux dünyasında
apt,dnf, ya da Windows içinwinget,Chocolatey) üzerinden sessiz kurulabilir; bu araçların kendi "sessiz mod" bayrakları (-y,--silentgibi) vardır ve genellikle yükleyicinin kendi parametrelerinden daha tutarlıdır.
Bu çeşitlilik nedeniyle, bir yazılımı sessiz kurmadan önce yapılacak en güvenilir adım, yazılımın resmi belgelerini veya yükleyici dosyasının /? ya da /help parametresiyle verdiği çıktıyı kontrol etmektir. Bazı yükleyiciler hangi araçla paketlendiğini dosya özelliklerinden veya yükleyiciyi bir arşivleyiciyle incelerken de ele verebilir.
Güvenlik Konuları ve Yönetim Hakları
Sessiz kurulumların büyük çoğunluğu, sistem dosyalarına yazma ve kayıt defterini (registry) değiştirme işlemleri içerdiği için yönetici (administrator) hakları gerektirir. Script'in yönetici yetkisiyle çalıştırılmadığı durumlarda kurulum sessizce başarısız olabilir — ki bu da "sessiz kurulumun" en can sıkıcı yanlarından biridir, çünkü hata görünür bir şekilde bildirilmeyebilir.
Bazı kurulum senaryolarında lisans anahtarı veya kullanıcı adı/şifre gibi hassas bilgilerin komut satırı parametresi olarak iletilmesi gerekebilir. Bu durum iki risk doğurur:
- Komut satırı geçmişi (command history) bu bilgileri düz metin olarak saklayabilir.
- Görev zamanlayıcı (Task Scheduler) veya grup ilkesi (Group Policy) günlüklerinde bu parametreler görünür hale gelebilir.
Bu yüzden mümkün olduğunca hassas bilgileri doğrudan komut satırına yazmak yerine, güvenli bir yapılandırma dosyası veya ortam değişkeni üzerinden iletmek, ardından bu dosyayı kısıtlı erişim izinleriyle korumak tercih edilmelidir. Kurumsal ortamlarda bu tür otomasyonların merkezi bir yazılım dağıtım aracı (örneğin bir Grup İlkesi nesnesi veya üçüncü taraf bir yönetim konsolu) üzerinden yürütülmesi, hem güvenlik hem de denetlenebilirlik açısından daha sağlıklıdır.
Hata Yönetimi ve Başarısız Kurulumları İşleme
Bir batch dosyasında kurulumun başarılı olup olmadığını kontrol etmek için errorlevel değişkeni kullanılabilir:
"YazilimA_Setup.exe" /VERYSILENT /NORESTART
if errorlevel 1 (
echo Kurulum basarisiz oldu, hata kodu: %errorlevel%
) else (
echo Kurulum basariyla tamamlandi.
)
MSI tabanlı kurulumlarda dönen hata kodları Windows Installer'ın belgelenmiş standart kodlarına karşılık gelir (örneğin 0 başarıyı, 1603 ise genel bir kurulum hatasını işaret eder). Ancak bu kodların tam listesi ve anlamları yazılımdan yazılıma farklılık gösterebileceğinden, kesin yorum için ilgili yazılımın resmi dokümantasyonuna bakmak en güvenli yoldur.
Büyük ölçekli dağıtımlarda, başarısız olan kurulumları otomatik olarak yeniden deneyen bir mekanizma kurmak işe yarayabilir — örneğin script birkaç saniye bekleyip kurulumu tekrar deneyebilir ya da belirli bir deneme sayısından sonra bir log dosyasına "başarısız" olarak işaretleyip bir sonraki yazılıma geçebilir. Daha gelişmiş senaryolarda, başarısız kurulumların bir e-posta bildirimi ya da merkezi bir izleme panosuna kaydedilmesi, yöneticinin manuel olarak her makineyi kontrol etme ihtiyacını azaltır.
Son olarak, kurulumdan önce sistemin mevcut durumunun bir yedeğini almak (özellikle geri alınması güç değişiklikler söz konusu olduğunda) ihtiyatlı bir yaklaşımdır; böylece bir kurulum beklenmedik şekilde sistemi bozarsa önceki duruma dönülebilir.
Sessiz kurulum parametreleri, doğru kullanıldığında onlarca saatlik manuel işi birkaç dakikalık bir script çalıştırmaya indirger. Ancak her yükleyicinin kendi kuralları olduğunu unutmamak, günlük dosyalarını düzenli kontrol etmek ve güvenlik risklerini göz ardı etmemek, bu otomasyonun sürdürülebilir ve güvenilir olmasını sağlayan temel unsurlardır.



