{"id":111,"date":"2025-05-05T21:08:01","date_gmt":"2025-05-05T19:08:01","guid":{"rendered":"https:\/\/www.ruberti.info\/?p=111"},"modified":"2025-05-05T21:36:21","modified_gmt":"2025-05-05T19:36:21","slug":"distribuire-applicazioni-su-azure-virtual-desktop-tramite-app-attach","status":"publish","type":"post","link":"https:\/\/www.ruberti.info\/index.php\/2025\/05\/05\/distribuire-applicazioni-su-azure-virtual-desktop-tramite-app-attach\/","title":{"rendered":"Distribuire applicazioni su Azure Virtual Desktop tramite App Attach"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Dal primo Giugno 2025 la funzionalit\u00e0 MSIX App Attach verr\u00e0 ritirata; NO panic: basta passare alla funzionalit\u00e0 <strong>App Attach<\/strong>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ma a cosa serve questa funzionalit\u00e0?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">App Attach permette di semplificare la distribuzione di applicazioni a differenti tipologie di utenti evitando cos\u00ec di dover creare diverse immagini. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nel modello tradizionale era necessario creare un immagine si sistema operativo per ogni tipologia di utente (es. personali commerciale, personale amministrativo, tecnico e cos\u00ec via):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"675\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_0.png\" alt=\"\" class=\"wp-image-113\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_0.png 612w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_0-272x300.png 272w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Con App Attach possiamo fornire la stessa immagine di sistema operativo a tutti gli utenti e poi distribuire selettivamente le applicazioni ai vari utenti:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"520\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_1-1024x520.png\" alt=\"\" class=\"wp-image-114\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_1-1024x520.png 1024w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_1-300x152.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_1-768x390.png 768w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_Delivery_1.png 1218w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Come si pu\u00f2 vedere dalla precedente immagine la funzionalit\u00e0 si combina perfettamente con la gestione del salvataggio dei profili utenti di FSLogix. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Che differenza c&#8217;\u00e8 fra la vecchia soluzione (MSIX App Attach) e la nuova (App Attach)?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>MSIX app attach<\/th><th>App attach<\/th><\/tr><\/thead><tbody><tr><td>Applications are delivered using RemoteApp or as part of a desktop session. Assignment to application groups controls access, however all desktop users see all MSIX app attach applications in the desktop application group.<\/td><td>Applications are delivered using RemoteApp or as part of a desktop session. Permissions are applied per application per user, giving you greater control over which applications your users can access in a remote session. Desktop users only see the app attach applications assigned to them.<\/td><\/tr><tr><td>Applications might only run on one host pool. If you want it to run on another host pool, you must create another package.<\/td><td>The same application package can be used across multiple host pools.<\/td><\/tr><tr><td>Applications can only run on the host pool in which they&#8217;re added.<\/td><td>Applications can run on any session host running a Windows client operating system in the same Azure region as the application package.<\/td><\/tr><tr><td>To update the application, you must delete and recreate the application with another version of the package. You should update the application in a maintenance window.<\/td><td>Applications can be upgraded to a new application version with a new disk image without the need for a maintenance window.<\/td><\/tr><tr><td>Users can&#8217;t run two versions of the same application on the same session host.<\/td><td>Users can run two versions of the same application concurrently on the same session host.<\/td><\/tr><tr><td>Telemetry for usage and health isn&#8217;t available through Azure Log Analytics.<\/td><td>Telemetry for usage and health is<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Come funziona App Attach?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per distribure un applicazione \u00e8 necessario eseguire i seguenti step:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Creare uno Storage Account e assegnare i permessi corretti<\/li>\n\n\n\n<li>Creare una folder e inserire il pacchetto dell&#8217;applicazione<\/li>\n\n\n\n<li>Creare l&#8217;applicazione da distribuire <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Creare uno Storage Account e assegnare i permessi corretti<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"908\" height=\"982\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_1.png\" alt=\"\" class=\"wp-image-117\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_1.png 908w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_1-277x300.png 277w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_1-768x831.png 768w\" sizes=\"auto, (max-width: 908px) 100vw, 908px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Assegnare tramite IAM il permesso di lettura e accesso ai dati a:<br>&#8211; Azure Virtual Desktop<br>&#8211; Azure Virtual Desktop ARM Provider<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"444\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/2App_Attach_1-1-1024x444.png\" alt=\"\" class=\"wp-image-118\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/2App_Attach_1-1-1024x444.png 1024w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/2App_Attach_1-1-300x130.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/2App_Attach_1-1-768x333.png 768w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/2App_Attach_1-1.png 1355w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Assegnare il permesso di Lettura a tutti i Session Host, che dovranno accedere alle applicazioni, nella folder creata per ospitare le applicazioni (nel mio caso avdapp)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_3-1024x554.png\" alt=\"\" class=\"wp-image-119\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_3-1024x554.png 1024w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_3-300x162.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_3-768x416.png 768w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_3.png 1347w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Creare una folder e inserire il pacchetto dell&#8217;applicazione<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"482\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_11-1024x482.png\" alt=\"\" class=\"wp-image-124\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_11-1024x482.png 1024w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_11-300x141.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_11-768x361.png 768w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_11-1536x723.png 1536w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_11.png 1743w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"385\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_12-1024x385.png\" alt=\"\" class=\"wp-image-125\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_12-1024x385.png 1024w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_12-300x113.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_12-768x289.png 768w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_12.png 1183w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per le immagini del disco \u00e8 possibile usare\u00a0<em>Composite Image File System (CimFS)<\/em>,\u00a0<em>VHDX<\/em>\u00a0o\u00a0<em>VHD<\/em>, ma non \u00e8 consigliabile usare VHD. <br>La soluzione CimFS richiede meno tempo in fase di caricamento. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per la creazione di queste immagini \u00e8 necessario usare lo strumento msixmgr.exe (ma ne parler\u00f2 in un altro articolo). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Creare l&#8217;applicazione da distribuire<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In fase iniziale, il wizard ci chiede di selezionare un host pool target che viene utilizzato per verificare che l&#8217;app sia conforme con il sistema (ad esempio viene verificato il certificato con il quale \u00e8 stata firmata l&#8217;applicazione)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"459\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/APpAttach_dati.png\" alt=\"\" class=\"wp-image-128\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/APpAttach_dati.png 944w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/APpAttach_dati-300x146.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/APpAttach_dati-768x373.png 768w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;applicazione pu\u00f2 essere registrata in fase di  login (o al primo utilizzo):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-zoooom\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"996\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_4.png\" alt=\"\" class=\"wp-image-126\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_4.png 947w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_4-285x300.png 285w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_4-768x808.png 768w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E pu\u00f2 essere collegata a pi\u00f9 session host:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"506\" src=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_5.png\" alt=\"\" class=\"wp-image-127\" srcset=\"https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_5.png 947w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_5-300x160.png 300w, https:\/\/www.ruberti.info\/wp-content\/uploads\/2025\/05\/App_Attach_5-768x410.png 768w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusioni<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">App Attach \u00e8 un interessante strumento per distribuire differenti applicazioni a utenti, o gruppi di utenti, su uno o pi\u00f9 session host semplificando incredibilmente la configurazione dei nostri ambienti Azure Virtual Desktop<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dal primo Giugno 2025 la funzionalit\u00e0 MSIX App Attach verr\u00e0 ritirata; NO panic: basta passare alla funzionalit\u00e0 App Attach. Ma a cosa serve questa funzionalit\u00e0? App Attach permette di semplificare la distribuzione di applicazioni a differenti tipologie di utenti evitando cos\u00ec di dover creare diverse immagini. Nel modello tradizionale era necessario creare un immagine si &hellip; <a href=\"https:\/\/www.ruberti.info\/index.php\/2025\/05\/05\/distribuire-applicazioni-su-azure-virtual-desktop-tramite-app-attach\/\" class=\"more-link\">Continua a leggere <span class=\"screen-reader-text\">Distribuire applicazioni su Azure Virtual Desktop tramite App Attach<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[8],"class_list":["post-111","post","type-post","status-publish","format-standard","hentry","category-azure","tag-azure-virtual-desktop"],"_links":{"self":[{"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/posts\/111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/comments?post=111"}],"version-history":[{"count":9,"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/posts\/111\/revisions"}],"predecessor-version":[{"id":131,"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/posts\/111\/revisions\/131"}],"wp:attachment":[{"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/media?parent=111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/categories?post=111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ruberti.info\/index.php\/wp-json\/wp\/v2\/tags?post=111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}