Bu makalede8 bölüm
- Teknoloji
- Microsoft Intune, Win32 Content Prep Tool, Intune Management Extension, PowerShell, Windows Installer
- Konu
- Win32 uygulamalarının Intune için paketlenmesi, dağıtımı ve sorun giderme
- Seviye
- Orta–ileri
- Ön koşullar
- Intune’a kayıtlı Windows cihazlar
- Intune’da uygulama yönetimi yetkisi
- Temel PowerShell bilgisi
Intune’da “başarısız” görünen Win32 uygulamalarının çoğu aslında cihaza kurulmuştur; hata paketlemede, sessiz kurulum parametresinde ya da algılama kuralındadır. Win32 uygulama türü, klasik .exe veya .msi kurulumlarını .intunewin paketine çevirip sessiz kurulum komutları, algılama kuralları ve gereksinimlerle birlikte dağıtmanın en esnek yoludur. Aşağıda paket hazırlamaktan algılama kurallarına, bağımlılık ve supersedence tanımlarından IME loglarıyla sorun gidermeye kadar Win32 dağıtımını, sahada sık gördüğümüz hatalarla birlikte adım adım anlatıyoruz.
Intune’da uygulama türleri ve Win32’nin yeri
Intune Windows için birden fazla uygulama türü sunar. Yanlış tür seçilirse bakım yükü yıllarca sürer.
| Tür | Uygun durum | Sınırlama |
|---|---|---|
| Win32 (.intunewin) | Her türlü .exe, .msi, betikli kurulum | Paketleme ve algılama emeği gerekir |
| LOB (MSI) | Tek dosyalık basit MSI | Bağımlılık ve özel algılama yok; Autopilot’ta Win32 ile karışmamalı |
| Microsoft Store uygulaması (WinGet) | Store’da yayınlanan uygulamalar | Sürüm ve parametre kontrolü sınırlı |
| Microsoft 365 Apps | Office dağıtımı | Yalnız Office için |
| Enterprise App Catalog | Microsoft’un hazır paketlediği yaygın uygulamalar | Ek lisans gerektirir; katalog kapsamı sınırlı |
Store (WinGet) türü, yayıncının güncellediği basit uygulamalar için bakım yükü en düşük seçenektir ve Company Portal üzerinden kullanıcıya sunulabilir. Kurulum parametresi, lisans dosyası veya yapılandırma gerektiren kurumsal uygulamalarda ise Win32 tek gerçekçi yoldur. Aşağıdaki bölümlerin tamamı Win32 üzerine.
IntuneWinAppUtil ile paket hazırlama
Paketleme aracı, Microsoft’un Win32 Content Prep Tool deposunda yayımlanan IntuneWinAppUtil.exe’dir. Araç kaynak klasörün tamamını şifreleyip tek bir .intunewin dosyasına dönüştürür.
- Her uygulama için ayrı, yalnız gerekli dosyaları içeren bir kaynak klasör hazırlayın. Klasöre konan her dosya pakete girer; indirme klasöründen paketleme yapmak paketi gereksiz şişirir.
- Kurulum dosyasını, yanıt dosyalarını (.mst, .iss, .xml) ve kurulum betiğini aynı klasöre koyun.
- Aracı çalıştırın:
IntuneWinAppUtil.exe -c C:\Paket\Kaynak\NotepadPP -s npp-installer-x64.exe -o C:\Paket\Cikti -q
-c kaynak klasör, -s kurulum dosyası, -o çıktı klasörü, -q sessiz moddur. Kurulum dosyası .msi ise araç ürün kodu gibi bilgileri pakete ekler ve Intune bu bilgileri algılama kuralı için önerir. Paket boyutu için Microsoft’un belirttiği üst sınır 30 GB.
Kurulum ve kaldırma komutları
Intune kurulum komutunu kullanıcı etkileşimi olmadan çalıştırır. Komut sessiz olmalı ve yeniden başlatmayı kendisi tetiklememelidir. Kurulum davranışı System (makine geneli kurulum) veya User (kullanıcı profiline kurulum) olarak seçilir.
| Kurulum türü | Kurulum komutu örneği | Kaldırma komutu örneği |
|---|---|---|
| MSI | msiexec /i "uygulama.msi" /qn /norestart |
msiexec /x {ÜRÜN-KODU} /qn /norestart |
| NSIS (.exe) | npp-installer-x64.exe /S |
"%ProgramFiles%\Notepad++\uninstall.exe" /S |
| Betik | powershell.exe -ExecutionPolicy Bypass -File install.ps1 |
powershell.exe -ExecutionPolicy Bypass -File uninstall.ps1 |
.exe kurulumlarında sessiz parametre üreticiye ve kurulum motoruna (NSIS, Inno Setup, InstallShield) göre değişir; üreticinin dağıtım dokümantasyonunu esas alın. Tahminle yazılmış /silent parametresi, kullanıcının ekranında bekleyen bir kurulum sihirbazı demektir. Karmaşık senaryolarda (çalışan uygulamayı kapatma, eski sürümü temizleme, yapılandırma dosyası kopyalama) açık kaynak PowerShell App Deployment Toolkit gibi bir sarmalayıcı betik standart sağlar.
Komutları Intune’a yüklemeden önce SYSTEM bağlamında test edin; hataların çoğu burada yakalanır. Sysinternals PsExec ile SYSTEM yetkili bir komut istemi açılabilir:
psexec.exe -s -i cmd.exe
whoami
REM nt authority\system çıktısı görülmeli
npp-installer-x64.exe /S
echo %ERRORLEVEL%
Intune dönüş kodlarını varsayılan olarak şöyle yorumlar: 0 ve 1707 başarılı, 3010 yumuşak yeniden başlatma, 1641 zorunlu yeniden başlatma, 1618 yeniden deneme (başka bir kurulum sürüyor). Kurulumu farklı bir kodla başarıyla bitiren uygulamalar için o kodu listeye ekleyin.
Sahada en sık takılınan tuzaklardan biri: Intune Management Extension 64 bit Windows’ta 32 bit bir süreç olarak çalıştığı için kurulum komutundan çağrılan powershell.exe da 32 bit başlar ve HKLM\SOFTWARE yazmaları WOW6432Node altına yönlendirilir. 64 bit bağlam gerekiyorsa komutu %SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe üzerinden çağırın. Kayıt defteri anahtarı “kayboldu” diye aranıyorsa önce WOW6432Node’a bakın.
Algılama kuralları nasıl yazılır
Algılama kuralı, Intune’un kurulumun başarılı olup olmadığına ve uygulamanın cihazda bulunup bulunmadığına karar verdiği tek ölçüttür. Hatalı kural, başarıyla kurulmuş uygulamayı “başarısız” gösterir ya da her döngüde yeniden kurulum denetir. Kural yanlışsa paket ne kadar doğru olursa olsun sonuç yanlıştır.
- MSI ürün kodu: MSI kurulumları için en güvenilir yöntem; isteğe bağlı olarak ürün sürümü karşılaştırması eklenebilir.
- Dosya veya klasör: Varlık, değiştirilme tarihi, sürüm veya boyut kontrolü yapılır. Yükseltmeleri ayırt etmek için sürüm karşılaştırması gerekir.
- Kayıt defteri: Anahtar varlığı veya değer karşılaştırması. 64 bit cihazlarda 32 bit uygulama için “32 bit uygulamayla ilişkili” seçeneği doğru işaretlenmeli.
- Özel betik: Birden fazla koşulun birlikte kontrolü gerektiğinde kullanılır.
Ürün kodu ve sürüm bilgisini bulmak için kaldırma kayıtlarını sorgulayın:
$yollar = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $yollar |
Where-Object { $_.DisplayName -like '*Notepad++*' } |
Select-Object DisplayName, DisplayVersion, PSChildName, UninstallString
Özel algılama betiği, sıfır çıkış koduyla bitip STDOUT’a çıktı yazdığında uygulamayı yüklü kabul ettirir. Sürüm kontrolü yapan bir örnek:
$exe = "$env:ProgramFiles\Notepad++\notepad++.exe"
$hedef = [version]'8.6.0'
if (Test-Path $exe) {
$vi = (Get-Item $exe).VersionInfo
$surum = [version]('{0}.{1}.{2}' -f $vi.FileMajorPart, $vi.FileMinorPart, $vi.FileBuildPart)
if ($surum -ge $hedef) {
Write-Output "Yuklu: $surum"
exit 0
}
}
exit 1
Betikte yalnız başarı durumunda çıktı üretin. Başarısız dalda unutulmuş bir hata ayıklama satırı sıfır çıkış koduyla birleşirse uygulama yüklü görünür; cihazda olmayan uygulama raporda yeşil yanar.
Bağımlılık, supersedence ve atama stratejisi
Gereksinimler (requirements) uygulamanın hangi cihazlara uygulanabileceğini belirler: işletim sistemi mimarisi, en düşük Windows sürümü, disk alanı, bellek veya özel bir gereksinim betiği. Gereksinimi karşılamayan cihazda uygulama hata değil, “uygulanamaz” olarak raporlanır.
Bağımlılık (dependency), örneğin bir uygulamanın Visual C++ çalışma zamanı veya .NET bileşeni gerektirdiği durumda tanımlanır. Bağımlı uygulama “otomatik yükle” seçeneğiyle eklenirse Intune ana uygulamadan önce bağımlılığı yükler. Bağımlılık uygulamasının algılama kuralı da en az ana uygulamanınki kadar doğru olmalı; zincirin en zayıf halkası çoğu zaman o paket olur.
Supersedence, yeni sürümün eski sürümün yerini almasını tanımlar. “Önceki sürümü kaldır” seçeneği açılırsa eski sürümün kaldırma komutu önce çalışır; kapalıysa yeni sürüm yerinde güncelleme olarak kurulur. Yerinde güncellemeyi desteklemeyen uygulamalarda kaldırma seçeneğini açın.
Atama türleri:
- Required: Uygulama otomatik yüklenir. Cihaz veya kullanıcı gruplarına atanabilir; Autopilot ve ESP senaryolarında cihaz grupları tercih edilir.
- Available for enrolled devices: Uygulama Company Portal’da kullanıcıya sunulur; genellikle kullanıcı gruplarına atanır.
- Uninstall: Uygulama kaldırma komutuyla cihazdan kaldırılır.
Yeni paketi önce BT ekibinin cihazlarına, ardından küçük bir pilot gruba, en son genel gruba atayın. Atama filtreleri (assignment filters) ile model, işletim sistemi sürümü veya cihaz sahipliği gibi özelliklere göre ek daraltma yapılabilir. Doğrudan “All devices” ataması geri alınması en zor hatadır.
Dağıtımı izleme ve IME loglarıyla sorun giderme
Intune yönetim merkezinde uygulamanın Device install status görünümü cihaz bazında durum ve hata kodunu gösterir. Ayrıntı ise cihaz üzerindeki loglardadır:
C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\AppWorkload.log: Win32 uygulamalarının indirme, kurulum ve algılama adımları.IntuneManagementExtension.log: Genel IME işleyişi, politika alma ve eşitleme.AgentExecutor.log: PowerShell betiklerinin ve algılama/gereksinim betiklerinin çalıştırılması.
Logları CMTrace gibi bir log görüntüleyiciyle açıp uygulama adı veya uygulama kimliği (GUID) ile filtreleyin. İnceleme sırası her zaman aynıdır: uygulama politikası cihaza geldi mi, içerik indirildi mi, kurulum komutu hangi dönüş koduyla bitti, ardından algılama kuralı ne sonuç verdi. Kurulum başarılı ama algılama başarısızsa sorun pakette değil, kuraldadır.
Testte bilinmesi gereken bir davranış: başarısız olan bir Win32 kurulumu, IME’nin genel yeniden değerlendirme takvimi (GRS) nedeniyle varsayılan olarak yaklaşık 24 saat dolmadan yeniden denenmez. Hizmeti yeniden başlatmak yeni atamaların değerlendirilmesini hızlandırır, ama bu bekleme süresini her zaman atlatmaz. Pilot aşamasında düzeltilmiş paketi ayrı bir test uygulaması olarak yükleyip doğrulamak daha öngörülebilirdir.
# Testte değerlendirmeyi hızlandırmak için IME hizmetini yeniden başlatma
Restart-Service -Name IntuneManagementExtension
# Son kurulum denemesiyle ilgili satırları okuma
Select-String -Path "C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\AppWorkload.log" -Pattern "Notepad" |
Select-Object -Last 30
Toplu otomasyon ve raporlama için PowerShell kalıpları PowerShell ile sunucu yönetimi otomasyonu yazısında da var. Autopilot sırasında ESP’de takılan uygulamaları incelerken Windows Autopilot ile cihaz kurulumu rehberindeki tanılama adımlarını bu loglarla birlikte kullanın.
Paketleme kontrol listesi
- Kaynak klasör yalnız gerekli dosyaları içeriyor; sürüm bazlı arşivleniyor.
- Kurulum ve kaldırma komutları SYSTEM bağlamında, kullanıcı etkileşimi olmadan test edildi.
- Dönüş kodları üretici dokümantasyonuna göre kontrol edildi; gerekiyorsa listeye eklendi.
- Algılama kuralı sürüm bilgisini içeriyor ve 32/64 bit yolu doğru.
- Gereksinimler (mimari, en düşük Windows sürümü, disk) tanımlandı.
- Bağımlılıklar ayrı paket olarak hazırlandı ve kendi algılama kuralları test edildi.
- Önceki sürüm için supersedence ve kaldırma davranışı belirlendi.
- Pilot grubunda kurulum, yükseltme ve kaldırma senaryolarının üçü de doğrulandı.
- Autopilot ESP’de kullanılacaksa paket kurulum süresi ölçüldü.
Uygulama envanterinin Intune’a taşınması, paket kütüphanesinin oluşturulması ve sürüm güncellemelerinin periyodik takibi için teknik destek ve periyodik bakım ile Microsoft 365 hizmetleri sayfalarına bakabilirsiniz.
Sık sorulan sorular
Win32 uygulama paketinin boyut sınırı nedir?
Microsoft, Intune’a yüklenebilecek tek bir Win32 uygulama paketi için 30 GB üst sınır belirtir. Büyük paketler indirme süresini ve WAN yükünü artırır. Çok büyük kurulumlarda ortak bileşenleri ayrı paketlere bölüp bağımlılık olarak tanımlamak ve şubelerde Delivery Optimization ya da Microsoft Connected Cache ile içeriği yerelde önbelleğe almak daha yönetilebilirdir.
Algılama betiği hangi koşulda uygulamayı yüklü kabul eder?
Özel algılama betiği sıfır çıkış koduyla sonlanır ve STDOUT’a herhangi bir çıktı yazarsa uygulama yüklü kabul edilir. Betik sıfır dışında bir kodla biter veya hiç çıktı üretmezse uygulama yüklü sayılmaz. Bu yüzden betikte hata ayıklama için yazılan çıktılar yanlış pozitif sonuç üretebilir.
Intune Management Extension uygulamaları ne sıklıkla kontrol eder?
IME, Win32 uygulama atamalarını varsayılan olarak yaklaşık saatte bir kontrol eder; cihaz veya IME hizmeti yeniden başlatıldığında da değerlendirme yapılır. Test sırasında Company Portal’dan eşitleme başlatmak veya IntuneManagementExtension hizmetini yeniden başlatmak beklemeyi kısaltır.
Mevcut bir MSI uygulamasını LOB yerine neden Win32 olarak paketlemeliyim?
Win32 türü; özel algılama kuralları, gereksinimler, bağımlılık, supersedence, dönüş kodu yönetimi ve Delivery Optimization desteği sağlar. Ayrıca Autopilot sırasında LOB ve Win32 uygulamalarının birlikte yüklenmesinden kaynaklanan Windows Installer çakışmalarını önler.
- Etiketler microsoft 365
- Teknoloji
- Microsoft Intune, Win32 Content Prep Tool, Intune Management Extension, PowerShell, Windows Installer
- Konu
- Win32 uygulamalarının Intune için paketlenmesi, dağıtımı ve sorun giderme
- Seviye
- Orta–ileri
- Ön koşullar
- Intune’a kayıtlı Windows cihazlar
- Intune’da uygulama yönetimi yetkisi
- Temel PowerShell bilgisi
Sistem Destek