MSIX App attach en Azure Virtual Desktop

MSIX App attach en Azure Virtual Desktop

Hola amigos, pues después de haber tomado la certificación AZ-140 de Microsoft he decidido escribir un nuevo post acerca de cómo trabajar en escritorios virtuales de Azure con MSIX App attach. en este post veremos los prerrequisitos y la configuración que nos llevara a tener un mejor control de nuestras aplicaciones desde Azure Virtual Desktop.

Primeramente, comencemos por la definición de MSIX app, MSIX es un nuevo formato de empaquetado que ofrece muchas características destinadas a mejorar la experiencia de empaquetado para todas las aplicaciones de Windows. El formato de paquete MSIX conserva la funcionalidad de los paquetes de la aplicación o de los archivos de instalación existentes, además de permitir nuevas y modernas características de empaquetado e implementación en aplicaciones de Win32, WPF y Windows Forms.

La conexión de aplicaciones en formato MSIX es una manera de proporcionar aplicaciones en MSIX a máquinas virtuales y físicas. Sin embargo, la conexión de aplicaciones MSIX es diferente de MSIX normal, ya que se creó especialmente para productos compatibles, como Azure Virtual Desktop.

¿Cuáles son sus principales características?

  • Reliability. MSIX ofrece una instalación confiable que ostenta una tasa de éxito del 99,96 % en millones de instalaciones con una desinstalación garantizada.
  • Optimización de ancho de banda. MSIX reduce el impacto en el ancho de banda de la red al descargar solo los bloques de 64 KB. Esto se hace aprovechando el archivo AppxBlockMap.xml incluido en el paquete de la aplicación MSIX (continúa leyendo para obtener más información). MSIX está diseñado para sistemas modernos y la nube.
  • Optimizaciones de espacio en disco. Con MSIX no hay ninguna duplicación de archivos entre aplicaciones y Windows administra los archivos compartidos entre aplicaciones. Las aplicaciones siguen siendo independientes entre sí, por lo que las actualizaciones no afectarán a otras aplicaciones que compartan el archivo. Se garantiza una desinstalación limpia incluso si la plataforma administra archivos compartidos entre aplicaciones.

Aspectos Destacados.

  • Empaquetado de aplicaciones de Windows existentes. Usa MSIX Packaging Tool a fin de crear un paquete de MSIX para cualquier aplicación de Windows, nueva o antigua. MSIX Packaging Tool racionaliza la experiencia de empaquetado, y ofrece una interfaz de usuario o línea de comandos interactiva para convertir y empaquetar aplicaciones de Windows.
  • Instalación de paquetes de la aplicación MSIX. Usa el Instalador de aplicación para instalar o actualizar cualquier paquete de la aplicación MSIX que esté disponible localmente o en cualquier red de distribución de contenido.
  • Aplicación de correcciones en tiempo de ejecución a las aplicaciones empaquetadas. La plataforma de compatibilidad de paquetes es un kit de código abierto que te permite aplicar correcciones a tu aplicación de escritorio existente cuando no tienes acceso al código fuente, de modo que pueda ejecutarse en un contenedor de MSIX.
  • Uso de MSIX en cualquier lugar. Con el SDK de MSIX de código abierto, los paquetes de MSIX son más versátiles e independientes de la plataforma. El SDK proporciona todas las API necesarias para verificar, validar y desempaquetar

En una implementación de Azure Virtual Desktop, la conexión de aplicaciones MSIX se puede:

  • Crear una separación entre los datos de usuario, el sistema operativo y las aplicaciones mediante contenedores de MSIX.
  • Eliminar la necesidad de volver a empaquetar al entregar aplicaciones de forma dinámica.
  • Reducir el tiempo que tarda un usuario en iniciar sesión.
  • Reducir el coste y los requisitos de infraestructura.

teniendo esto más claro veamos ahora la forma en cómo podemos configurar utilizando ya un laboratorio previo o comenzar durante la fase de implementación y primeros pasos para la configuración de Azure Virtual Desktop.

Paso 1 – Requisitos de Almacenamiento

Dentro de nuestro controlador de dominio en donde se conectan y se crean las máquinas virtuales vamos a crear dos grupos de seguridad uno destinado para los usuarios y otro para las computadoras, tambien puede ser en otro equipo que tenga acceso a Active Directory Users and Computers.

Para los usuarios AVDUsers, Para los grupos AVDSessionHosts, todos los usuarios que van a utilizar MSIX app attach deben estar dentro de este grupo

Dentro del grupo de AVDSessionHosts vamos a agregar las maquinas virtuales o sessionhosts que vayan a utilizar el servicio de MSIX app attach, importante activar el tipo de objeto computadora.

Ahora creamos un usuario admin llamado Storage Admin que sera el que de los permisos para compartir hacia nuestro storage account, podemos usar esta cuenta después si necesitamos conectar y administrar los permisos de NTFS.

Para terminar, debemos hacer una sincronización con PowerShell ejecutando el siguiente comando, este proceso debe realizarse desde donde tengamos nuestro AD connect.

ahora ejecutamos los siguientes comandos para conectarnos a Azure y crear nuestro StorageAccount es importante utilizar el cmdlet Update-Module az para tener las ultimas versiones.

Podemos ejecutar la linea 14 para validar si el nombre de nuestro StorageAccount es un nombre valido y no repetido.

Ahora ejecutamos el tipo de StorageAccount, recordemos que se tienen direfentes tipos de StorageAccount con todo lo relacionado al performance, mas información en este link.

Storage account overview – Azure Storage | Microsoft Learn

para nuestro caso vamos a utilizar LRS para esta prueba por lo que para temas de producción es recomendado Premium Storage, ejecutamos una de las siguientes opciones.

Para comprobar nos vamos a nuestro Resource Group y veremos el StorageAccount creado.

Ahora debemos descargar los Cmdlets de Powershell para el módulo de AZFilesHybrid, una vez descargados los descomprimimos y ejecutamos las siguientes líneas para instalarlos en el equipo técnico que estamos utilizando para conectar nuestro StorageAccount.

Puedes descargar los archivos del módulo desde este link https://github.com/Azure-Samples/azure-files-samples/releases

Ahora vamos a registrar nuestro StorageAccount en Windows Active Directory. es importante mencionar que he realizado la prueba anteriormente con otro StorageAccount para el servicio de FSlogix por lo que se ha creado con anterioridad una OU aplicando algunas GPO para que no expire el password en los objetos creados. para este ejemplo ejecutamos las siguientes líneas.

ahora ejecutamos las siguientes líneas para obtener el target de nuestro StorageAccount y la información de nuestro dominio.

Ahora vamos a activar las opciones de Tier, esto dependerá si estamos utilizando Premium, hot, cold o transactionoptimized importante mencionar que el tamaño de la quota es el monto que se pagara por el acceso premium y las optimizaciones de transacción. en este caso utilizaremos transactionoptimized.

ahora vamos a elevar los permisos de Azure Files para ello vamos a conectarnos a nuestro AzureAD usando la siguiente información, es importante mencionar que lo debemos hacer con el Azure AD Global Admin.

Ahora seleccionamos las dos siguientes líneas para asignar los permisos con Azure AD Roles. en este caso para los administradores sera Storage File Data SMB Share Elevated Contributor y para los usuarios normales solamente Storage File Data SMB Share Reader para esto utilizamos el usuario creado en los primeros pasos de este post.

Ahora agregamos los grupos de usuarios y Sessions hosts creados también desde AD y sincronizados desde AD Connect. (estos pasos los realizamos al principio del post).

ahora verificamos desde Azure en la sección Access Control (IAM)

Ahora ejecutamos la siguiente porción de Powershell para darle al Administrador de Storage los privilegios necesarios para NTFS.

Ahora comprobamos la conectividad y damos los permisos de full control al usuario StorageAdmin

Ahora como siguiente paso creamos nuestro folder MSIXPackages que tendrá la configuración de nuestras apps MSIX. una vez creada la carpeta nos aseguramos de agregar al grupo de usuarios y grupo de session hosts creados con anterioridad y verificar en los permisos que tengan los atributos Read y List folder contents.

Antes de continuar con la creación de nuestras aplicaciones es necesario crear los certificados, vamos a ello….

para la parte de certificados tenemos 3 opciones disponibles:

La primera de ellas es un certificado comercial por parte de una entidad certificadora como VeriSign o DigiCert

La segunda opción es por medio de un certificado PKI (public Key Infraestructure)

La tercera opción es por medio de un Self-signed certificate el cual es simple de crear y no necesita una administración centralizada.

Mas información podemos encontrar en este link Create a certificate for package signing – MSIX | Microsoft Learn

para este propósito usaremos Self Signed Certificate y utilizaremos un equipo de construcción en donde crearemos los certificados y las aplicaciones.

podemos utilizar el equipo donde tenemos el rol de certificate Authority para poder crearlo.

Ejecutamos las siguientes lineas de Powershell colocando el friendlyname, common name, orgname y el countrycode, este ultimo dependera de esta lista mostrada en este link https://www.digicert.com/kb/ssl-certificate-country-codes.htm

la siguiente lista mostrara los certificados.

Ahora necesitamos exportar el certificado como .pfx el cual usaremos como parte de la configuración de la creación de los paquetes de MSIX. Además de la siguiente línea de ejecución debemos colocar un password el cual no debemos olvidar como parte del proceso de configuración.

Ahora exportamos el certificado como .CER ejecutando la siguiente linea de comandos.

Veremos los dos keys dentro de la carpeta documentos.

Ahora debemos importar el certificado en cada uno de los Sessions host los cuales estarán configurados para los paquetes de MSIX, esto lo podemos hacer de manera centralizada a traves de GPO´s o a traves de una imagen customizada o base ya en un ambiente de producción en este caso lo haremos entrando a cada sesión a traves de RDP para instalar los certificados.

Para esta operación debemos incluirlo en el equipo o server que tiene el rol de Certificate Authority para eso podemos realizar este proceso usando el siguiente comando de Powershell.

Dentro del servidor de Certificate Authority abrimos Manage Computer Certificates en la sección Certificates veremos nuestro certificado agregado.

Ahora copiamos el certificado .CER creado con anterioridad en nuestro SessionHost para instalarlo como local computer.

Damos clic en Place all certificates in the following store y seleccionamos Trusted Root Certification Authorities

damos clic en siguiente y finalizamos, por ultimo veremos el certificado agregado en la computadora local.

hasta aquí tenemos la configuración de nuestro Storage Account y nuestro certificado, ahora toca crear los paquetes de MSIX

Para comenzar el proceso iremos a nuestro equipo de pruebas o equipo de testeo en donde podremos instalar las aplicaciones para hacer pruebas y que tenga acceso a nuestro controlador de dominio

Para este ejemplo abrimos nuestro browser y descargamos 7zip https://www.7-zip.org/download.html .exe

ahora debemos descargar la herramienta MSIX package tool desde este link. https://docs.microsoft.com/en-us/windows/msix/packaging-tool/tool-overview

Una vez descarga la aplicación, abrimos y damos clic en create your app package.

creamos un nuevo paquete en esta computadora y damos clic en siguiente.

Ahora seleccionamos Windows Search is Active y damos clic en disable selected, una vez realizado el proceso damos clic en continuar o siguiente.

Ahora seleccionamos nuestra aplicación .EXE en este caso 7zip además podemos crear argumentos para una instalación desatendida o en segundo plano.

Para este ejemplo usaremos como Signing preference nuestro certificado .PFX creado con anterioridad, colocamos el password. Time stamp server URL es opcional, pero podemos copiar el siguiente

http://timestamp.verisign.com/scripts/timstamp.dll

Ahora colocamos la información de nuestro paquete.

Ahora procede a instalar en el equipo de prueba, como le hemos puesto un switch desatendido la instalacion se realiza de manera desatendida, algunos paquetes es necesario reiniciar el equipo, para este caso damos clic en continuar o siguiente.

creamos el paquete y damos clic en continuar.

Damos clic en Yes, Move On y continuamos.

Por último damos clic en crear, podemos crear una carpeta por cada paquete creado.

Por último, podemos testear la instalación usando los comandos de Powershell siguientes para tanto instalar como para desinstalar.

Importante, si no tuviéramos previamente el certificado en nuestros Session Hosts tendríamos un error de instalación, veamos el ejemplo.

Ahora ejecutamos con el certificado instalado.

y para eliminar desde Powershell ejecutamos la siguiente línea de comandos.

Si quisiéramos ver la información relacionada al paquete, podemos cambiar la extension del mismo con .ZIP y abrirlo, esto nos traerá la información necesaria para realizar tareas específicas.

Abrimos el archivo AppxManifest.xml y veremos la información del paquete.

Ahora vayamos al último paso, colocar este paquete para–Azure Virtual Desktop con MSIX App Attach

Para estos pasos lo primero que tenemos que realizar es extraer el paquete MSIX creado para colocarlo en la red, esto lo haremos ejecutando las siguientes líneas de comando de Powershell en el equipo de prueba o técnico que estamos utilizando.

Habilitamos la característica de Hyper-V y reiniciamos el equipo para continuar.

Para este proceso la conexión de la aplicación MSIX tiene cuatro fases distintas que se deben realizar en el siguiente orden:

  1. Stage: El primer Script monta la imagen del disco en el S.O. haciendo el paquete disponible para su registro
  2. Register: Registra la aplicación en el S.O.
  3. Deregister: Remueve la aplicación del S.O.
  4. Destage: remueve la imagen del disco y desmonta el disco duro virtual

Ahora ejecutamos la siguiente Linea de comandos para crear un nuevo disco duro virtual haciendo referencia a nuestro archivo .MSIX cambiando la extension por .VHDX

Lo siguientes comandos nos ayudaran a montar el disco duro, particionar y formatear la partición, vamos a ello.

Ahora ejecutamos la siguiente porción de código y veremos nuestro disco duro virtual creado.

Ahora necesitamos ejecutar el comando mountvol para extraer el ID que usaremos en los próximos pasos.

Ahora vamos a copiar el GUI del volumen montado, en este caso la unidad E: que sera parte de los próximos pasos a la hora de ejecutar el Código de Powershell, podemos guardarlo en una variable dentro del mismo Código que estamos usando.

Vamos a descargar la siguiente herramienta desde este link https://aka.ms/msixmgr y ejecutamos el bloque de instrucciones para localizar el archivo. MSIX parent folder, importante ir a la ruta donde está ubicado msixmgr

veremos el resultado

Veremos el parent folder del paquete. MSIX extraído, lo copiamos en una variable para continuar.

por último, desmontamos la unidad con el siguiente comando y verificamos, esto lo tenemos que realizar con el disco desmontado para los siguientes pasos (Stage & Register).

Sustituimos las variables correspondientes para ejecutar el script de Stage, este lo puedes encontrar desde este link Configure Azure Virtual Desktop MSIX app attach PowerShell scripts – Azure | Microsoft Learn

Ahora registramos el paquete con los siguientes comandos.

Veremos la aplicacion en el menu de inicio.

Ahora veremos el ejemplo para desregistrar (deregister) para verificar que el proceso de instalación y desinstalación está funcionando adecuadamente.

Por último, ejecutamos destage para quita el volumen de disco montado.

Ahora vamos a subir nuestro paquete vhdx a Azure. Necesitamos estar seguros de conectarnos, también debemos copiar la información de nuestro resource group, storage account y nuestro sharename

Probablemente es necesario instalar el módulo Install-Module Az.Storage antes de continuar.

Por último, montamos nuestro FileShare en nuestro file explorer, veremos el siguiente resultado

Ahora copiamos nuestro .VHDX a nuestro file share

Casi hemos terminado, ahora vamos a agregar nuestro primer .MSIX a nuestro hostpool desktop, vamos a Azure virtual Desktop – Seleccionamos nuestro Hostpool y damos clic en MSIX Packages.

https://storageamsix.file.core.windows.net/msixshare/MSIXPackages/7zipMSIX.vhdx

Por ultimo volvemos a ir a nuestro Hostpool – Application group para agregar el paquete.

Asignamos el grupo de usuarios para este Application Group

y listo, hemos terminado, ahora simplemente verificamos con Remote Desktop Application o desde el browser.

https://aka.ms/avdweb

Veremos nuestro paquete instalado dentro del hostpool

Si lo queremos ver de manera independiente, podemos crear un nuevo application group eliminando la aplicación ligada al applications group para realizar el proceso de manera independiente.

Sin más por el momento me despido enviándoles un gran saludo a todos mis lectores, estamos con nuevos post.

Tabla de contenidos

Categorías

Categorías