MECM üzerinden binlerce cihaza uygulama dağıtırken, kurulumun kullanıcı etkileşimi olmadan (sessiz/silent) çalışması ve dağıtımın doğru şekilde “algılanması” (detection), paketleme sürecinin en kritik iki unsuru.
Silent Install Parametrelerini Bulma
Her kurulum paketinin sessiz kurulum parametresi farklıdır. İlk kontrol ettiğim kaynaklar:
- MSI paketleri: Genellikle standart —
msiexec /i uygulama.msi /qn /norestart - EXE paketleri (kurulum sihirbazı):
kurulum.exe /Sveya/silentveya/verysilent— üreticiye göre değişir, dokümantasyona bakmak gerekir - Bilinmeyen bir EXE için:
kurulum.exe /?veya/helpile mevcut parametreleri keşfetmeyi denerim
MSI Loglama ile Doğrulama
msiexec /i uygulama.msi /qn /norestart /L*V "C:\Loglar\kurulum.log"
Kurulumun sessizce başarısız olduğu ama görünüşte “sorun yok” göründüğü durumlarda, bu log dosyası gerçek hatayı (genellikle bir MSI hata kodu) ortaya çıkarır.
Detection Method: “Kurulu mu Değil mi?” Sorusunun Cevabı
Detection method, MECM’e “bu uygulama zaten kurulu mu?” sorusunu nasıl soracağını söyler. Üç ana yaklaşım:
- MSI Product Code: En güvenilir yöntem — MSI’ın benzersiz GUID’ini kontrol eder
- Dosya varlığı/versiyonu: Belirli bir .exe veya .dll dosyasının varlığını ve sürümünü kontrol eder (EXE tabanlı kurulumlar için)
- Registry anahtarı: Kurulumun bıraktığı bir registry değerini kontrol eder
Sahadan Bir Uyarı: Yanlış Detection Method’un Bedeli
Detection method yanlış/gevşek tanımlandığında iki senaryo yaşanır: (1) uygulama zaten kuruluyken MECM tekrar tekrar kurulum denemesi yapar, kullanıcıyı rahatsız eder; (2) uygulama kurulu değilken MECM “zaten kurulu” sanıp hiç kurulum yapmaz. Her iki durum da destek taleplerine yol açar. Bu yüzden mümkün olduğunca MSI Product Code gibi kesin yöntemleri tercih ediyorum; dosya tabanlı tespit gerektiğinde de mutlaka sürüm numarası kontrolü ekliyorum (sadece dosya varlığı değil).
Wrapper Script Yaklaşımı
Karmaşık kurulumlar (birden fazla ön koşul, özel kayıt defteri ayarları) için doğrudan MSI/EXE yerine bir PowerShell wrapper script kullanmayı tercih ediyorum:
# Install.ps1 örneği
Start-Process msiexec.exe -ArgumentList "/i uygulama.msi /qn /norestart" -Wait
if ($LASTEXITCODE -eq 0) {
# Ek yapılandırma adımları (registry, config dosyası vb.)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Sirket\Uygulama" -Name "Yapilandirildi" -Value 1
}
exit $LASTEXITCODE
Sonuç
Sağlam bir uygulama paketleme süreci, sadece “kurulumu çalıştırmak” değil; sessiz kurulumu doğrulamak, güvenilir bir detection method tanımlamak ve başarısızlık durumlarını loglamaktan geçer. Bu disipline uyulduğunda, MECM üzerinden yapılan dağıtımlar büyük ölçüde “kur ve unut” seviyesine ulaşır.