Configurare MSIX app attach (preview) in Azure Virtual Desktop

MSIX è un formato di pacchetto di app di Windows (introdotto in Windows 10 versione 1709 (10.0.16299.0)) che permette di distribuire e gestire le app in maniera moderna. Le applicazioni vengono racchiuse all’interno di un unico file e possono essere distribuite in maniera molto semplice nei sistemi operativi Windows. Trovate maggiori informazioni al link https://docs.microsoft.com/it-it/windows/msix/overview

Windows Virtual Desktop è un servizio di virtualizzazione per desktop e app eseguito sul cloud. È possibile connettersi da qualsiasi dispositivo tramite un’applicazione nativa oppure tramite il client Web HTML5 di Windows Virtual Desktop.

MSIX app attach è una nuova modlaità di distribuzione delle applicazioni alle macchine fisiche o alle macchine virtuali. C’è differenza però con le classiche applicazioni MSIX perché MSIX app attach è stata pensata ed ottimizzata appositamente per Windows Virtual Desktop.

Invece che installare le applicazioni direttamente nell’immagine delle macchine del nostro Host Pool di Windows Virtual Desktop, abbiamo la possibilità di distribuirle sotto forma di MSIX Containers (file VHD oppure VHDX), che vengono agganciati agli utenti che hanno il diritto di accdere alle app, semplificando moltissimo la fase di distribuzione ed aggiornamento delle nostre applicazioni.

IMPORTANTE: Prima di poter utilizzare la funzionalità di MSIX app attach preview è necessario registrare la propria sottoscrizione utilizzando l’apposito form. Potrebbe essere necessario attendere fino a 24 ore (nei giorni lavorativi) per l’approvazione della richiesta, senza la quale MSIX app attach non funzionerà.

Figura 1: Funzionamento di MSIX app attach – Credits: https://christiaanbrinkhoff.com/

Creazione del pacchetto MSIX – Preparazione dell’ambiente per la conversione

La preparazione dell’ambiente di conversione è un passaggio importante del processo di creazione di un pacchetto MSIX. Le raccomandazioni minime sono:

  • Sistema operativo minimo Windows 10 1809
  • Installazione pulita di Windows. Sul computer dove verrà effettuata la conversione non devono essere installate altre applicazioni perché lo strumento per la creazione di pacchetti MSX vedrà tutti gli elementi dell’ambiente per acquisire le attività del programma di installazione.
  • L’ambiente di conversione deve corrispondere all’architettura di in cui verrà distribuita l’applicazione. Se ad esempio si intende distribuire il pacchetto MSIX in un computer x64, è necessario eseguire la conversione in un computer x64.
  • È consigliato l’utilizzo di una macchina virtuale Hyper-V ed è anche disponibile un ambiente già pronto al link https://docs.microsoft.com/it-it/windows/msix/packaging-tool/quick-create-vm
  • Utilizzo di una macchina virtuale offre anche la comodità di creare un checkpoint. In questo modo è possibile usare la macchina virtuale per convertire, ripristinare il checkpoint precedente e avere un computer pulito e configurato pronto per la conversione o per verificare che il pacchetto MSIX sia stato convertito correttamente.
  • È anche utile sapere quali tipi di dipendenze ha l’applicazione, per capire quali devono essere eseguite con l’app e quali devono essere inserite in un pacchetto di modifica (runtime oppure plug-in)

Convertire un’applicazione utilizzando MSIX Packaging Tool

Per poter scaricare MSIX Packaging Tool è sufficiente effettuare una ricerca nel Microsoft Store. dopo aver trovato il tool procedete alla sua installazione come mostrato nelle figure sotto:

Figura 2: Ricerca dell’MSIX Packaging Tool nel Microsoft Store

Figura 3: Download e installazione dell’MSIX Packaging Tool

Figura 4: dell’MSIX Packaging Tool installato

Prima di poter procedere alla creazione di un nuovo package è necessario possedere un certificato digitale che verrà utilizzato per firmare il pacchetto MSIX. Nel caso in cui non può non possediate questo tipo di certificato è anche possibile crearlo in modalità self-signed utilizzando i comandi PowerShell mostrati sotto. Ho provveduto quindi alla creazione del certificato e alla esportazione sia della chiave privata che della chiave pubblica, che verranno successivamente utilizzate.

NOTA: È importante sottolineare che il certificato con la chiave pubblica dovrà essere presente sui client di destinazione, altrimenti l’installazione del pacchetto MSIX fallirà.

Figura 5: Creazione del certificato self-signed per la firma del pacchetto MSIX

Figura 6: verifica della creazione del certificato self-signed

A questo punto possiamo procedere alla creazione di un nuovo package utilizzando MSIX Package Tool. Fate click sulla prima icona per far partire il wizard di creazione del package.

Figura 7: Lancio del wizard per la creazione di un nuovo package MSIX

Figura 8: Scelta della modalitò della creazione del wizard

È anche possibile utilizzare una macchina virtuale per creare i pacchetti MSIX, usando la funzionalità Creazione rapida di Hyper-V, disponibile a partire da Windows 10, versione 1709. L’ambiente MSIX Packaging Tool è una versione di valutazione personalizzata di Windows 10 (versione 1909) che include la versione più recente dello strumento per la creazione di pacchetti MSIX e altri prerequisiti che consentono di iniziare rapidamente a usare le attività di configurazione.

Figura 9: Utilizzo di una macchina virtuale dedicata per la creazione del pacchetto MSIX

Attendete l’installazione del MSIX Packaging tool driver e cliccate nella casella di controllo per disabilitare Windows Search. Fate click su Next per proseguire. Nel caso il tool vi chieda di riavviare , premete Cancel , effettuato il riavvio e ripetete il processo per la creazione di nuovo package subito dopo il reboot.

Figura 10: Installazione dell’ MSIX Packaging tool driver

Selezionate quindi l’installer del software di cui volete creare il package. In questo esempio ho deciso di distribuire Notepad++ ed ho provveduto a scegliere il file .PFX del certificato da utilizzare per la firma del pacchetto, che avevo creato pocanzi utilizzando PowerShell. Fate click su Next per proseguire nel wizard.

Figura 11: Scelta del pacchetto e del certificato di utilizzare per firmarlo

Inserite a questo punto le informazioni richieste dal wizard e decidete in quale cartella dovrà essere salvato il file .MSIX che verrà creato. Una volta che avrete cliccato su Next comincerà l’installazione del vostro software e non potrete tornare alla schermata precedente.

Figura 12: Inserimento delle informazioni del package

Procedete quindi all’installazione del software e alla successiva esecuzione (primo avvio). Personalizzate il software a vostro piacimento . Ricordatevi che qualsiasi operazione che farete verrà registrata dall’MSIX Packaging Tool. Se l’applicazione prevede componenti aggiuntivi o prerequisiti, installate tutto ciò che viene richiesto per la sua corretta esecuzione.

Figura 13: Avvio dell’installazione dell’applicazione da trasformare in package

NOTA: Ricordatevi di disabilitare gli aggiornamenti automatici dell’applicazione, perché gli MSIX app attach containers sono in sola lettura.

Avviate l’applicazione per verificare che tutto sia stato installato correttamente.

Figura 14: Esecuzione dell’applicazione ed eventuali personalizzazioni

Dopo aver completato l’installazione e la personalizzazione dell’applicazione è possibile chiuderla e proseguire con il wizard di creazione del nuovo package. Fate click su Next per proseguire.

Figura 15: Installazione dell’applicazione completata

L’MSIX Packaging Tool mostrerà tutte le applicazioni e gli entry point che è riuscito a catturare durante l’installazione. In questo caso viene mostrata l’applicazione in maniera corretta . Fate click su Next per continuare.

Figura 16: applicazioni registrate dall’MSIX Packaging Tool

Un prompt vi chiederà conferma dell’ avvenuta installazione e configurazione di tutte le applicazioni. Fate click su Yes, Move on.

NOTA: Se volete inserire nello stesso pacchetto MSIX altre applicazioni oppure un plug-in, cliccate su No, I’m not done e procedete con il wizard per l’installazione dei componenti aggiuntivi.

Figura 17:Prompt di conferma prima di proseguire con il wizard

Nella schermata successiva verranno mostrati eventuali servizi che sono stati installati dall’ applicazione. La possibilità di creare pacchetti di servizi in MSIX è stata introdotta in Windows 10 Client 2004 (10.0.19041.0). In questo caso non sono stati installati servizi. Fate click su Next per continuare.

Figura 18: Eventuali servizi installati dall’applicazione

Scegliete quindi la cartella di installazione e il nome del file .MSIX che volete creare. Fate click su Create per la creazione del package.

Figura 19: Scelta del percorso di installazione e del nome del file .MSIX

Dopo pochi secondi, il pacchetto sarà stato creato ed un messaggio vi avviserà dell’ avvenuta creazione.

Figura 20: Creazione del package completata con successo

Figura 21: File .MSIX creato dal Packaging Tool

Distribuzione del certificato self-signed

Poiché per firmare digitalmente il nostro pacchetto MSIX abbiamo utilizzato un certificato self-signed sarà prima necessario distribuire il certificato sulle nostre macchine client. Per farlo potete servirvi di una Group Policy, mettendo la chiave pubblica del certificato nel repository Trusted People delle macchine Session Host. Nelle figure sotto sono mostrati i diversi passaggi:

Figura 22: Distribuzione del certificato self-signed utilizzato per firmate il pacchetto MSIX utilizzando una GPO

Figura 23: Il certificato deve essere messo nel repository Trusted People

Preparazione di un package MSIX da utilizzare con Windows Virtual Desktop

Poiché MSIX app attach (preview) è una soluzione che permette di collegare dinamicamente le applicazioni da un pacchetto MSIX ad una sessione utente, è necessario che i pacchetti MSIX siano espansi in un VHD o VHDX (MSIX Image) per funzionare correttamente. La prima operazione necessaria da fare è creare un VHD o VHDx, montarlo nel sistema operativo, formattarlo e creare una cartella nel VHD montato. La creazione della cartella è obbligatoria e può avere qualsiasi nome. Trovate tutti i riferimenti alla pagina Windows Virtual Desktop prepare MSIX app attach image preview – Azure | Microsoft Docs

Io ho utilizzato una macchina Windows 10, versione 2004, in cui ho abilitato Hyper-V con il comando:

Microsoft Hyper-V deve essere abilitato perché servono le cmdlet Mount-VHD e Dismount-VHD

Qui di seguito lo script che ho utilizzato io per creare il VHD e la cartella al suo interno:

Figura 24: Esecuzione dello script per la creazione del VHD Package per MSIX

Terminata la creazione del VHD è necessario espandere i pacchetti MSIX all’interno del VHD (è possibile mettere più pacchetti nello stesso file VHD). Per farlo ci serviremo del tool MSIXMGR, che trovate al link Download the msixmgr tool. Estraete il tool in una cartella e da un prompt dei comandi, eseguito con privilegi elevati, lanciate il comando

Nel mio caso i comandi che ho utilizzato sono:

NOTA: Effettuate la stessa operazione per tutti i pacchetti MSIX che volete aggiungere allo stesso VHD

Figura 25: Espansione del pacchetto MSIX nel VHD package

Copiate il nome del package perché ci servirà più tardi per effettuare dei test. Nel mio caso il nome è NotepadPlusPlus_1.0.0.0_x64__t0nrdm30b1zn4

Procuratevi anche il GUID del VHD Package perché ci servirà per l’esecuzione dei prossimi script di test. Per recuperare il GUID aprite un prompt dei comandi con privilegi elevati e lanciate il comando Mountvol. Nel mio caso il GUID è ade3aee5-7853-477f-9e84-71bc3b64b432

Figura 26: Recupero del GUID del VHD package

Procedete quindi ad effettuare l’unmount del VHD Package (MSIX Image) utilizzando la console Disk Management cliccando col tasto destro sul disco e scegliendo Detach VHD, oppure da Esplora risorse cliccando col tasto destro sulla lettera del disco e scegliendo Eject.

Figura 27: Unmount del VHD package

Condivisione del VHD Package (MSIX Image)

Io ho deciso di condividere i fiel VHD in una Azure File Share. Le Azure File Shares supportano l’autenticazione basata su due tipi di servizi di dominio: Active Directory Domain Services locale (AD DS) e Azure Active Directory Domain Services (Azure AD DS).

Quando si abilita Active Directory Domain Services (AD DS) per le Azure File Shares, i computer aggiunti ad un dominio possono montare le cartelle condivise usando le credenziali di dominio locale. Inoltre è possibile gestire meglio le autorizzazioni per consentire un controllo di accesso granulare alle cartelle e ai file condivisi.

Trovate maggiori informazioni sulla procedura di integrazione delle Azure File Share con Active Directory nella mia guida Integrare le Azure File Share con un dominio Active Directory locale – ICT Power

Dopo aver creato lo storage account in Azure l’ho integrati con il mio AD locale utilizzando i passaggi mostrati di seguito:

Figura 28: Script di integrazione dell’AD locale con un Azure Storage Account

Dopo aver effettuato la procedura, come si può vedere dall’immagine seguente, lo storage account può utilizzare gli utenti di AD locale per definire i permessi di accesso.

Figura 29: Lo storage account è integrato con AD locale

Ho creato una Azure File Share, che adesso può usare come metodo di autenticazione gli utenti, i gruppi e i computer di AD locale.

Figura 30: Creazione della Azure FIle Share, che adesso può utilizzare come metodo di autenticazione gli utenti, i gruppi e i computer di AD locale

Ho creato un gruppo di Active Directory all’interno del quale ci saranno gli Host di Windows Virtual Desktop che saranno autorizzati ad accedere alla Azure File Share. Questo semplificherà molto l’assegnazione dei permessi per l’accesso allo storage account.

Figura 31: Gruppo di AD locale con gli host che dovranno accedere alla Azure File Share

Dopo aver replicato in Azure AD il gruppo creato in locale, lanciando la sincronizzazione con il tool Azure AD Connect, procedete a concedere il privilegio di Storage File Data SMB Share Reader per lo storage account al gruppo replicato, come mostrato nella figura sotto:

Figura 32: Assegnazione del ruolo di Storage File Data SMB Share Reader per lo storage account al gruppo di Session Host

Montate la Azure File Share su una delle macchine del dominio, utilizzando il percorso \\storageaccountname\share. Nel mio caso il percorso è \\nicmsixapps.file.core.windows.net\applications

Figura 33: Aggiunta della Azure File Share alle risorse di rete

Provvedete a copiare nella Azure File Share i file VHD con gli MSIX Package. Io ho creato una sottocartella per raccoglierli e l’ho chiamata vhds. Successivamente provvedete a dare i permessi NTFS di sola lettura al gruppo di Session Host che avete creato in precedenza in AD locale, come mostrato nella figura sotto:

Figura 34: Modica dei permessi NTFS in modo tale che il gruppo di Session Host possa accedere alla Azure File Share

Il percorso completo in cui si trova il VHD package (MSIX Image) è nel mio caso \\nicmsixapps.file.core.windows.net\applications\vhds\notepadplusplus.vhd

Configurazione di MSIX app attach utilizzando il portale di Azure

Da qualche tempo è disponibile la possibilità di utilizzare il portale di Azure per aggiungere gli MSIX Packages. Selezionate il vostro Host Pool (se non lo avete già creato potete seguire la mia guida Configurare i Remote Desktop Services in Azure Windows Virtual Desktop – ICT Power)e dal nodo MSIX Packages fate clic su +Add. Inserite il percorso completo del vostro file VHD e dal menù a tendina scegliete l’applicazione che volete aggiungere. Vi ricordo che nello stesso file VHD è possibile inserire più applicazioni. Scegliete come Registration Type la voce On-demand e come State scegliete Active.

NOTA: Assicuratevi che i vostri Session Host siano attivi in un validation environment

Figura 35: Verifica che l’Host Pool sia in un validation environment

Figura 36: Aggiunta dell’MSIX Package all’Host Pool

Figura 37: Aggiunta dell’MSIX package completata

Selezionate l’Application group dell’Host Pool a cui volete aggiungere l’MSIX package e selezionate il nodo Applications per aggiungere la nuova applicazione MSIX.

Figura 38: Selezione dell’Application group dell’Host Pool

Figura 39: Aggiunta dell’applicazione MSIX all’Application Group

Figura 40: Aggiunta dell’applicazione MSIX all’Application Group completata

L’ultimo passaggio consiste nell’assegnare l’Application group agli utenti o ai gruppi di Azure AD (sincronizzati con l’on-premises) a cui volete concederne l’utilizzo. Cliccate sul nodo Assignments dell’Application group e procedete ad aggiungerli.

Figura 41: Aggiunta degli utenti o dei gruppi a cui verrà concesso l’utilizzo del gruppo di applicazioni

Figura 42: Gruppo di utenti di Azure AD abilitato all’utilizzo del gruppo di applicazioni

Test di MSIX app attach (preview) – OPZIONALE

Prima di fare il deployment delle applicazioni nella vostra infrastruttura di Windows Virtual Desktop, è consigliabile prima effettuare un test per simulare quello che sarà il comportamento nel vostro WVD Host Pool. Per farlo Microsoft ha messo a disposizione una serie di script PowerShell che potete recuperare dalla pagina Configurare gli script di PowerShell per la connessione di desktop virtuale Windows MSIX-Azure | Microsoft Docs

Se non volete effettuare il test o siete sicuri che l’applicazione funzioni correttamente, potete passare direttamente alla sezione Distribuzione di MSIX App Attach in Windows Virtual Desktop.

Creazione degli script per MSIX app attach (preview)

Prima di cominciare ad utilizzare il pacchetto MSIX che abbiamo creato è necessario lanciare una serie di script PowerShell per apportare alcune modifiche e prepararlo alla corretta esecuzione.

MSIX app attach ha 4 fasi ben distinte che devono essere effettuate in un preciso ordine:

  1. Stage
  2. Register
  3. Deregister
  4. Destage

Ogni fase crea degli script PowerShell, che possono essere recuperati alla pagina RDS-Templates/msix-app-attach at master · Azure/RDS-Templates · GitHub

Figura 43: Script per MSIX app attach

Stage PowerShell script

Modificate le variabili dello script di Stage RDS-Templates/1.stage-a.ps1 at master · Azure/RDS-Templates · GitHub in modo tale che riporti le informazioni corrette. Nel mio caso lo script è quello di seguito:

Figura 44: Esecuzione dello script di Stage

Register PowerShell script

Modificate le variabili dello script di Register RDS-Templates/2-a.register.ps1 at master · Azure/RDS-Templates · GitHub in modo tale che riporti le informazioni corrette. Nel mio caso lo script è quello di seguito:

Figura 45: esecuzione dello script di Register

Dopo l’esecuzione dello script di Register vedrete che nel menu avvio della macchina sarà apparso il collegamento alla vostra app, che potrà essere lanciata e testata.

Figura 46: Lancio dell’app registrata

Deregister PowerShell script

Modificate le variabili dello script d Deregister RDS-Templates/3.deregister-a.ps1 at master · Azure/RDS-Templates · GitHub in modo tale che riporti le informazioni corrette. Nel mio caso lo script è quello di seguito:

Figura 47: esecuzione dello script di Deregister

Destage PowerShell script

Modificate le variabili dello script d Destage RDS-Templates/4.destage-a.ps1 at master · Azure/RDS-Templates · GitHub in modo tale che riporti le informazioni corrette. Nel mio caso lo script è quello di seguito:

Figura 48: Esecuzione dello script di Destage

Questi script vi permettono di testare il comportamento dell’applicazione e possono essere eseguiti manualmente oppure possono essere eseguiti automaticamente, anche distribuendoli tramite una Group Policy in questo modo:

  • Stage script eseguito durante lo Startup
  • Rgister script eseguito durante il Logon
  • Deregister script eseguito durante il Logoff
  • Destage script eseguito durante lo Shutdown

Distribuzione di MSIX App Attach in Windows Virtual Desktop

Per poter accedere a Windows Virtual Desktop è possibile utilizzare il client web HTML 5 disponibile all’indirizzo https://rdweb.wvd.microsoft.com/arm/webclient oppure è possibile utilizzare i client Windows dedicati, che potete trovare alla pagina Connettersi a desktop virtuale Windows 10 o 7-Azure | Microsoft Docs. Potete installare il client per l’utente corrente, nel qual caso non sono richiesti diritti di amministratore, oppure l’amministratore può installare e configurare il client in modo che tutti gli utenti del dispositivo possano accedervi. Dopo l’installazione, il client può essere avviato dal menu Start cercando Desktop remoto.

Nel mio caso ho utilizzato il client web e dopo l’autenticazione mi sono collegato al WorkSpace che avevo creato durante il wizard. L’unica applicazione disponibile è quella che permette di collegarsi alla sessione desktop remota. In alternativa potete pubblicare le applicazioni e utilizzare le RemoteApp.

Figura 49: Connessione a Windows Virtual Desktop effettuata

Figura 50: Richiesta di consentire l’accesso alle stampanti locali e ai dischi del dispositivo da cui si sta effettuando la connessione

Inserite le credenziali per poter accedere al desktop remoto e sarete pronti per cominciare a lavorare!

i metodi di accesso attualmente supportati:

  • Client desktop di Windows
    • Nome utente e password
    • Smart card
    • Windows Hello for business (solo attendibilità del certificato)
  • Client Windows Store, Client Web, Android, iOS, macOS
    • Nome utente e password

NOTA: Windows Virtual Desktop non supporta attualmente Active Directory Federation Services (ADFS) per SSO. L’unico modo per evitare che vengano richieste le credenziali per il Session Host consiste nel salvarle nel client. È consigliabile eseguire questa operazione solo con i dispositivi protetti per impedire ad altri utenti di accedere alle risorse.

Figura 51: Inserimento delle credenziali per poter accedere al Session Host remoto

Figura 52: Creazione del profilo utente nel Session Host remoto

Adesso siete pronti per lavorare col vostro Desktop remoto e potrete accedere a tutte le risorse, anche a quelle on-premises grazie alle connessioni VPN Site-To-Site oppure grazie ad ExpressRoute.

Come potete vedere dalla figura sotto, al Session Host a cui si è collegato l’utente è stato montato il VHD che contiene l’applicazione MSIX. L’utente può lanciare l’applicazione del menu avvio di Windows, come qualsiasi altra applicazione.

Figura 53: Il VHD Package con le applicazioni MSIX è stato collegato al Session Host

Figura 54: Apertura dell’applicazione MSIX nel Session Host remoto

Conclusioni

MSIX app attach per Windows Virtual Desktop permette di distribuire facilmente le applicazioni e di poterle successivamente aggiornare in maniera molto rapida, in modo tale da offrire l’esperienza migliore all’utente. Questo permette di ridurre il re-imaging dei nostri Host Pool e di rendere le applicazioni indipendenti dal sistema operativo. La conversione di un’applicazione LOB in formato MSIX è un’operazione veloce, tanto quanto la sua successiva distribuzione nel nostro ambiente VDI.

Maggiori informazioni

Windows Virtual Desktop MSIX app attach glossary – Azure | Microsoft Docs

Risorse di MSIX – MSIX | Microsoft Docs

MSIX app attach Azure portal integration public preview – Page 2 – Microsoft Tech Community

MSIX app attach in WVD – YouTube