MSIX App Attach ile Azure Virtual Desktop’ta Dinamik Uygulama Dağıtımı

Azure Virtual Desktop ile uygulama dağıtımı için çeşitli yöntemler bulunmaktadır. En yaygın kullanılan yöntemlerden biri, Golden Image hazırlanması ve bu imajın Virtual Desktop havuzuna yeni istemciler eklenirken kullanılmasıdır. Bunun yanı sıra, Configuration Manager veya Group Policy yöntemleri ile yapılandırılmış istemcilere uygulamaların dağıtılması da mümkündür. Her yöntemin kendine özgü avantajları ve dezavantajları mevcuttur. Ayrıca, Azure Virtual Desktop ortamında uygulama dağıtmanın bir diğer yolu da, MSIX paketlerinin hazırlanarak havuzdaki istemcilere dağıtılmasıdır.

Bu makalede, Azure Virtual Desktop havuzunda yer alan kaynaklara uygulamaların MSIX formatında eklenmesi ve bu şekilde dağıtımın nasıl yapabileceğini inceleyeceğiz.

Bu seçenekte uygulama VHD olarak paketlenir ve kullanıcılarımızdan gelen talep üzerine Azure Virtual Desktop altında kullandığımız istemcilerimize eklenir. Uygulamanın yüklenmesini beklemek zorunda olmadığımız bir dağıtım modelidir. Uygulama basitçe talep üzerine eklenir ve aynı kolaylıkla kaldırılabilir. Uygulama ile ilgili herhangi bir güncelleme, yapılma ihtiyacı olduğunda da sadece uygulamanın güncellenmesi ve msix formatında dağıttığımız uygulamayı kullanan tüm istemcilerde anlık olarak hemen kullanılabilir duruma getirebiliriz.

MSIX Paketleme ve Dağıtımının Dezavantajları

Peki diğer yöntemlere göre dezavantajı ise ilk olarak uygulamayı capture etmek zorunda olmanızdır ki bu da bir süreçtir ve uygulamanın MSIX app attach ile uyumlu olması gerekir. Aynı zamanda MSIX app attach ortamda bir Active Directory olmasını gerektirir. Azure AD Domain Services’i desteklemez. Bu nedenle, yalnızca AD DS veya Azure AD kullanıyorsanız, app attach kullanımı mümkün olmamaktadır.

Azure Virtual Desktop Ortamına MSIX Uygulama Dağıtımı Adımları

Peki buraya kadar Azure Virtual Desktop üzerinde MSIX uygulama dağıtımının ne olduğunu anlattık. Burada dağıtımları yani öncelikle MSIX uygulama capture işlemlerini ardından da Azure Virtual Desktop ortamlarımıza dağıtımı nasıl yapacağımızı inceleyelim.

Öncelikle MSIX paketini oluşturmak için dağıtımını yapacağımız uygulama ya da uygulamaların exe yada msi dosyalarını edineceğiz. Ardından MSIX Packaging aracına ihtiyacımız olacak. Paketleme yaparken bir diğer ihtiyacımız ise sertifika olacak. Çünkü uygulamamızı paketlerken kriptografik olarak imzalanması da gerekecektir. Uygulamamızı paketlerken ortamımızda bir Windows CA Authority var ise yapabileceğimiz gibi self-signed bir sertifikada kullanabiliriz.

MSIX Paketinin İmzalanması ve Güvenlik

Burada en önemli kısım aslına bakarsanız bu paketin kim tarafından oluşturulduğu ve değiştirilip değiştirilmediğinin kontrolünün sağlanabilmesi aynı zamanda güvenli bir kaynak tarafından gelip gelmediğini doğrulamanması için imzalanma yapılması gereklidir. Aynı zamanda MSIX paketlerimizi self-signed şekilde imzaladıysak bir kenarda tutmak gerekecek. Çünkü uygulamalarımızın güncellenmesi noktasında da aynı sertifika ile yapılması gerekir aksi takdirde sertifikamızı farklı kullanırsak mevcut paketimiz üzerine yüklemeleri gerçekleştiremeyiz.

Ayrıca, temiz bir Windows 10/11 kurulumuna sahip ve HyperV rolü yüklü olan bir istemciye ihtiyacımız bulunmaktadır.

Son olarak, MSIX paketlerimizi VHD formatında paketleme ihtiyacımız bulunmaktadır. VHD formatında paketlenen MSIX dosyalarının Azure Virtual Desktop havuzumuzda bulunan kaynaklara erişilebilir olmasını sağlamak gerekmektedir. Bu amaçla, paylaşılan bir alana ihtiyaç duymaktayız. Bu makalede, Azure File Share kullanımını ele alacağız. Ayrıca, Azure File Share’i kurum içi ortamımızda bulunan Active Directory ile entegre ederek NTFS izinlerinden faydalanma yöntemlerini inceleyeceğiz.

Ön gereksinimler ve ihtiyaçlarımız ele alındıktan sonra, MSIX paketinin oluşturulma sürecine geçebiliriz.

Bunun için daha önce de belirttiğim gibi Windows 10 istemcimiz üzerinde HyperV rolü kurulmuş ve hazır durumda. Bununla birlikte aşağıda linkini paylaşmış olduğum MSIX Packeaging Tool uygulamasını kurarak Windows 10 istemcimiz üzerine indiriyoruz ve kurulumları gerçekleştiriyoruz.

MSIX Packaging Tool – Microsoft Apps

Buraya kadar yapmış olduğumuz işlemler sonrası MSIX paketlerimizi hazırlayacağımız ortamımızı hazır hale getirmiş olduk.

Bu çalışmalara başlamadan önce, ortamımız hakkında bilgi vermek istiyorum. Mevcut yerel yapımızda Active Directory sunucumuz bulunmaktadır ve Entra Connect ile kullanıcılarımız ve gruplarımız senkronize edilmiştir. Azure Virtual Desktop servisimizin dağıtımı tamamlanmış olup ana oturum ortamımızda (Host Pool) iki adet kaynak mevcuttur. Ayrıca, Azure Files kimlik tabanlı doğrulama konfigürasyonu yapılmıştır.

Azure Virtual Desktop kurulumu için daha önce hazırlamış olduğum Azure Virtual Desktop kurulumu ile ilgili makalelere aşağıda paylaştığım linkler üzerinden ulaşabilirsiniz.

Azure Virtual Desktop Bölüm 1

Azure Virtual Desktop Kurulum – Bölüm 2

Azure Virtual Desktop Monitoring – Bölüm 3

Azure Virtual Desktop Fslogix ve Image Management – Bölüm 4

Azure Virtual Desktop Management – Bölüm 5

Aynı zamanda Azure Files Idetity-Based kurulumu içinde yine daha önce hazırladığım makaleden faydalanabilirsiniz.

Azure Files RBAC Active Directory Entegrasyonu

Şimdi paketimizi oluşturmaya başlayabiliriz. Bu makalede, küçük bir uygulama olan WinRar uygulamasını MSIX formatında paketleyeceğim ve ardından VHD formatına dönüştürerek Azure Virtual Desktop üzerinde bulunan kaynaklara atayacağım. Burada uygulama olarak WinRar’ı seçmiş olmam herhangi bir fark yaratmamaktadır. Çünkü tüm uygulamalarda aynı yöntem kullanılacaktır. Ancak, mevcut gelişmiş uygulamalarda ince ayar yapmak istenirse, üreticilerin paylaştığı ve mümkün olabilecek düzenlemeleri elbette gerçekleştirebilirsiniz.

✅ Belirtildiği üzere, WinRaR uygulamasını MSIX formatında paketleyeceğiz. Bu amaçla, daha önce kurulumlarını gerçekleştirdiğimiz Windows 10 istemcisine geçiş yapıyoruz. İstemci üzerinde, Başlat menüsünden Hyper-V Quick Create aracını açıyoruz.

✅ Bizler burada Windows 10 MSIX packaging seçimini yapıyoruz ve Hyper-V üzerinde yeni bir makina oluşturmasını istiyoruz.

✅ Seçmiş olduğumuz paketimizi göre önce download edecek ve ardından Hyper-V ortamımızda yeni sanal makinamızı oluşturacak. Oluşturulmuş olan Windows 10 sanal makinamıza connect seçimini yaparak bağlanacağız ve kurulumlarını tamamlayacağız.

Kurulumu tamamlanmış sanal Windows 10 makinemize bağlandık ve MSIX Packaging Tool’un kurulu olduğunu da doğruladık. Sanal makine kullanmamızın nedeni, her zaman temiz bir makineye ihtiyaç duyabileceğimiz ve paketleme süreçlerinde karşılaşılan sorunlar nedeniyle snapshot alarak gerektiğinde bu snapshot üzerinden devam edebilmektir.

Amacımız uygulamaları MSIX formatında paketlemektir. Daha önce belirttiğimiz üzere, örnek olarak WinRAR uygulamasını paketleyeceğiz. WinRAR basit veya küçük bir uygulama gibi görünse de, her uygulama için aynı adımları takip etmemiz gerekmektedir. İlk adım olarak, WinRAR uygulamasını host makinemize indiriyoruz. Bu noktada önemli olan, uygulamayı sanal makineye değil, sanal makinenin çalıştığı ve barındırıldığı ana makineye indirmek ve orada çalıştırmaktır.

Bununla birlikte kurulum ve paketlemelere geçmeden önce uygulamamız için Self-Signed sertifika oluşturmamız gerekmek. Bunun nedenini makalemizin başında açıklamıştık. Dolayısı ile ilk paketleme aşamasında MSIX aracı bizden sertifika isteyecek ve bizler oluşturmuş olduğumuz sertifikayı göstererek devam edeceğiz.

Bunun için aşağıda yer alan powershell komut setleri ile oluşturacağız.

✅ New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject “CN=MSIX-UnifyTech-Cert” -Type CodeSigningCert -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm SHA256 -NotAfter (Get-Date).AddYears(2) -FriendlyName “MSIX UnifyTech Signing Certificate”

✅ $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -eq “CN= MSIX-UnifyTech-Cert ” }

✅ $certPassword = ConvertTo-SecureString -String “Parola” -Force -AsPlainText

✅ Export-PfxCertificate -Cert $cert -FilePath “C:\cert\ MSIX-UnifyTech-Cert.pfx” -Password $certPassword

Komut setimiz içerisinde yer alan sertifika isimlerini ,parolasını vee n önemlisi sertifika süresini kendinize göre özelleştirebilirsiniz. Sertifikamızı oluşturduktan ve export aldıktan sonra artık uygulamayı paketleyebiliriz.

✅ MSIX Packaging Tool içerisinde Application package seçimini yapıyoruz.

✅ Paketleme işlemi için local virtual machine seçiyoruz ve Windows 10 MSIX sanal makinamızı kuruyoruz. Öncelikle, sanal makinaya remote desktop ile bağlanarak kurulum ve paketleme işlemlerini sanal makina üzerinde gerçekleştiriyoruz.

✅ Ekran görüntüsünde de görüleceği üzere, sanal makinamıza bağlantımızı sağladıktan sonra gerekli sürücülerin yüklenmesi ve Windows Update servisini devre dışı bırakma gibi hazırlıkları tamamladıktan sonra bir sonraki aşamaya geçiyoruz.

✅ Daha önce indirdiğimiz ve MSIX formatında paketlemeyi planladığımız WinRar kurulum dosyasını seçiyoruz. Ardından “Sign with a certificate (pfx)” seçeneğini belirleyerek, kurulum öncesinde oluşturduğumuz self-signed sertifikayı ve belirlediğimiz parolayı tanımlayarak devam ediyoruz.

✅ Oluşturacağımız MSIX için isimlendirmemizi , eklediğimiz sertifika bilgisini ve Version bilgilerini girerek artık kurulum ve paketleme adımına devam ediyoruz.

MSIX paketleme çalışmalarına başladık ve sanal makine üzerindeki kurulum işlemleri planlandığı şekilde devam etmektedir. Standart bir kurulum ekranı kullanarak yaptığımız bu kurulumlar, MSIX paketleme aracı ile yakalanacak ve kurulum sonrasında paketimizi oluşturacaktır. İlk kurulum ekranında gerekli parametreleri girerek sessiz (silent) kurulum gerçekleştirme seçeneğimiz bulunmasına rağmen, standart bir kurulum yöntemi ile devam ediyoruz. Uygulamamızın kurulumunu tamamladıktan sonra, MSIX paketi hazır olacak ve kullanımımıza sunulacaktır.

✅ Kurulumun sorunsuz bir şekilde tamamlandığını belirten mesajımızı aldıktan sonra bir sonraki adıma ilerliyoruz.

✅ Oluşturduğumuz paketin hangi lokasyonda ve hangi uygulamayı çalıştırdığını görebiliyoruz. Burada uygulamalarımız farklı çalıştırılabilir yani .exe dosyalarına sahip olabilir. Browse seçeneğini üzerinden uygulamalarımızın ilk olarak hangi çalıştırılabilir dosyayı açacağını belirleyebilirsiz. Bizler için Winrar.exe burada çalıştıracağımız uygulama olduğu için herhangi bir değişiklik yapmadan artık son adımlarımıza geçiyoruz.

✅ Artık paketimizi hazırlamasını ve uygulamayı dinlemeyi durduruyoruzve Yes,move on seçimini yapıyoruz.

✅ Son adımda, Winrar uygulamasının MSIX paketinin oluşturulacağı ve hangi konuma kaydedileceği belirlendikten sonra “Create” seçeneğini seçerek paketleme işlemini tamamlıyoruz.

Bu aşamaya kadar, Winrar uygulamamızı MSIX paketi olarak oluşturmuş bulunuyoruz. Azure Virtual Desktop üzerinde MSIX paketimizi kullanabilmek ve dağıtabilmek için VHD formatına dönüştüreceğiz ve Azure Virtual Desktop havuzundaki oturum bilgisayarlarına ekleyeceğiz.

Oluşturduğumuz MSIX paketini VHD dosya formatına çevireceğiz. Bu işlem için kullanılacak PowerShell komut setlerini aşağıda paylaşmaktayım. Önceki çalışmada MSIX dosyasını masaüstüne kaydetmiş olsak da, bu dosyayı C sürücüsü altında “msixapp” isimli klasöre taşıyarak çalışmaya devam ediyorum. Aşağıda belirtilen dosya yollarını kendi sisteminize göre düzenleyebilirsiniz.

#Temp Folder Create

cd\

mkdir -Path C:\temp -Force

mkdir -Path C:\desktop -Force

# VHD File Creation

$file = Get-Item -Path C:\msixapp\*.msix

$file.PSPath

$file.BaseName

$vhdName = $file.BaseName + “.vhd”

New-VHD -SizeBytes 1024MB -Path c:\temp\$vhdName -Dynamic -Confirm:$false

$vhdObject = Mount-VHD c:\temp\$vhdName -Passthru

$disk = Initialize-Disk -Passthru -Number $vhdObject.Number

$partition = New-Partition -DiskNumber $disk.Number -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel $file.BaseName -Confirm:$false -Force

# Download Msixmgr Tool

Invoke-WebRequest -Uri https://aka.ms/msixmgr -OutFile C:\temp\msixmgr.zip

Expand-Archive -Path C:\temp\msixmgr.zip -DestinationPath C:\desktop\

# MSIX File Move

Copy-Item -Path $file.PSPath -Destination C:\Desktop\x64\

# Msix File Create

$partition

mkdir -Path “$($partition.DriveLetter):\msix”

cd C:\desktop\x64

.\msixmgr.exe -Unpack -packagePath $file.Name -destination “$($partition.DriveLetter):\msix” -applyacls

# Dismount Virtual Disk

Dismount-VHD -DiskNumber $vhdObject.DiskNumber

✅ Artık winrar kurulum dosyasımızı öncelikle msix aracımız ile yakaladık ve paketlemesini gerçekleştirdik. Ardından MSIX dosyamızı Azure Virtual Desktop ortamımızda kullanabilmek için VHD dosya formatına da çevirmiş olduk. Buraya kadar olan çalışmalarımızı tamamladıktan sonra artık sizlerle birlikte daha önce oluşturduğum fakat bu makalenin konusu olmayan Azure File Share üzerinde vhd dosyamızı ekliyoruz.

✅ Azure File Share Üzerinde yetkilendirme adımlarına geçiyoruz. Bizler Onpremise Active Directory ile Azure File Share entegrasyonunu kurulumlara başlamadan önce yaptığımızı belirtmiştim. Bununla ilgili hazırlamış olduğum makaleyide eklemiştim. Şimdi Active Directory sunucumuza geçiyorum ve aşağıda belirttiğim Active Directory Security Grupları oluşturuyorum.


✅ Ekran görüntüsünde de görüldüğü gibi üç adet güvenlik grubumuzu oluşturduk.

Bu grupların içerisinde AVD Session Hosts isimli güvenlik grubumuz içerisinde Azure Virtual Desktop ortamında yer alan oturum makinalarının tamamını ekliyorum. Azure Virtual Desktop ortamımıza yeni bir kaynak eklersek yani session host eklersek burada yer alan Active Directory güvenlik grubumuza eklenmesi gereklidir.

✅ Şimdi Azure Portal üzerine geçiyoruz ve daha öncesinde sync edilmiş Active Directory Security grubumuzu Azure File Share üzerinden yetkilendirmesini yapacağız.

✅ Daha önce oluşturmuş olduğumuz Azure File Share üzerine geçiyoruz ve Access Control seçimini yaparak gerekli yetkilendirmeleri yapıyoruz.

✅ Açılan sayfamız üzerinde Add ardından Add role assignment seçimini yapıyoruz.

Role tabı altında Storage File Data SMB Share Contributor seçimini gerçekleştiriyoruz.

Bizler için en kritik adımlardan biri olan üyelik kısmına daha önceden sync edilmiş ve Active Directory üzerinde session hostlarımızı üye olarak eklediğimiz AVD Session Host isimli grubumuzu seçiyoruz ve Azure File Share üzerinde gerekli yetkilendirmeleri tamamlamış oluyoruz.

✅ Azure File Share yetkilendirmelerini de gerçekleştirdikten sonra artık Azure Virtual Desktop servisimiz üzerine geçiyoruz ve artık oluşturduğumuz ve VHD formatına çevirdiğimiz MSIX paketlerimizi tanımlıyoruz.

✅ Ekran görüntüsünde de görüldüğü gibi öncelikle Azure Virtual Desktop Servisimize geçiyoruz. Ardından UnifyTech isimli Host Pool ve Manage tabı altında yer alan MSIX packages seçimini yapıyoruz. Açılan yeni alanda Add seçimini ve ardından ilgili Azure File Share altında yer alan VHD formatına çevrilmiş winrar dosyamızı seçiyoruz ve Active diyerek paketimizi eklemiş oluyoruz.

Son adımımıza gelmiş bulunmaktayız. Bir önceki adımda paketimizi ekledik ve bu paketi Desktop Application grubu altına dahil ederek kullanıcılarımızın erişimine açacağız. Bu sayede, her bir oturum bilgisayarı için ayrı ayrı kurulum yapmamıza gerek kalmadan, paketlenmiş dosyaları ortamda bulundurmak yeterli olacaktır.

⚠️ Burada dikkat edilmesi gereken bir diğer önemli husus, MSIX dosyalarımızı oluştururken Self-Signed sertifika kullanmış olmamızdır. Bu oluşturduğumuz sertifikanın her bir session host üzerinde tanımlı olması gerekmektedir. Aksi takdirde, uygulamalarımız çalışmayacak ve hatta portal üzerinden uygulamanın eklenmesine izin verilmeyecektir.

Son adım olarak Azure Virtual Desktop kullanıcımız ile oturum açarak kontrollerimizi yaptığımızda uygulamanın sanal olarak eklendiğini gözlemledik. Kaynaklarımız üzerinde herhangi bir uygulama kurmak yerine MSIX olarak Azure Virtual Desktop ortamlarımıza uygulamaları ekleyebilir veya kaldırabiliriz. Kurulum sürecinde yer alan kompleks adımlar dışında, bu yaklaşım imajlarımızı sade tutma, güncelleme süreçlerini hızlandırma ve yeniden başlatma gereksinimlerini ortadan kaldırma gibi avantajları bizlere sunmaktadır.

Aşağıda yer alan GitHub linki üzerinden makalemizde kullanılan powershell scriptlerinin tamamına erişebilirsiniz.

https://github.com/YenalT/AVD

Bir başka makalede görüşmek üzere.

Exit mobile version