Instalación de aplicaciones mediante remoteApp Virtual Machine

Instale una aplicación a través de una plantilla de catálogo de servicios de máquina virtual.

El scripting de instalación de aplicaciones admite los siguientes escenarios:

  • El caso de uso más común para la instalación de la aplicación RemoteApp es implementar aplicaciones remotas a las que se puede acceder desde un Azure Destop virtual.
  • Instale los requisitos previos, como la seguridad cibernética y los agentes de supervisión.
  • Cambios en la configuración del script para la conformidad o la configuración de la aplicación.

Note

Esta implementación de ejemplo es solo para fines de demostración y no representa todos los procedimientos recomendados para la administración de redes, sistemas o aplicaciones.

Prerequisites

La plantilla remoteApp admite scripting para automatizar el proceso de instalación de aplicaciones y la configuración de la máquina virtual. Antes de empezar a usar la instalación de la aplicación RemoteApp, debe asegurarse de que tiene:

Note

Si la cuenta de almacenamiento se encuentra en un enclave diferente, crea un punto de conexión de enclave en el enclave donde se encuentra la cuenta de almacenamiento. A continuación, cree una conexión de enclave entre ese enclave de la cuenta de almacenamiento y el enclave donde va a instalar la aplicación.

Recursos de Azure implementados

  • Máquina virtual de ejemplo de RemoteApp
    • Disco
    • Máquina virtual de Windows
    • extensión de máquina virtual de Windows

Software implementado

  • Windows
  • Aplicación que prefiera

Installation

Configuración de la cuenta de almacenamiento para instalar Visual Studio Code

  1. Agregue la carpeta de la aplicación al contenedor dentro de la cuenta de almacenamiento. Diagrama que muestra el método de instalación dentro del mismo enclave. Diagrama que muestra el método de instalación fuera del enclave que contiene la cuenta de almacenamiento.
    • Estructura de archivos:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. Descargue el instalador de la aplicación que necesita. En este ejemplo, descargue Vscode.exe y cargue el instalador en la carpeta de la aplicación de la cuenta de almacenamiento.
  3. Cargue el main.ps1 script del instalador de la aplicación compatible con la versión de Visual Studio Code que agregó a la carpeta de aplicaciones de la cuenta de almacenamiento:
        # Main powershell script that installs the application
    
        Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Plantilla de configuración

  1. En la página de información general de la carga de trabajo, seleccione +Add an Azure Service.

Captura de pantalla que muestra la página de información general de la carga de trabajo.

  1. En Service, seleccione Virtual Machine.

Captura de pantalla que muestra la máquina virtual seleccionada en la lista de catálogos de servicios.

  1. Confirme la selección del grupo de recursos y seleccione Next

  2. Pestaña Conceptos básicos:

    • En Virtual Machine name, escriba el nombre de la máquina virtual.
    • Para Admin username y Admin password, escriba el nombre de usuario y la contraseña que use para iniciar sesión en la máquina virtual.
  3. Pestaña Aplicación:

    • Para App folder URI, introduzca el URI del contenedor. Seleccione un artefacto dentro del contenedor, copie su URI y quite todo después del nombre de la carpeta en el URI. Captura de pantalla que muestra el URI de la carpeta de la aplicación para su uso en esta implementación.

      URI original URI corregido
      <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>/<script>.ps1 <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>
    • Example:

      • storageaccountexample.blob.core.windows.net/artifacts/vscode
    • Para Main Script especificar el nombre (por ejemplo: main.ps1) del script que instala la aplicación.

    Captura de pantalla que muestra la pestaña Aplicación durante la implementación de una máquina virtual.

Contenedor privado:

  1. Para App folder in private container, seleccione true para permitir que el rol reader acceda a la cuenta de almacenamiento mediante la máquina virtual.

  2. Para Storage container resource id, obtenga las tres partes siguientes: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Para obtener Storage container resource id, en la cuenta de almacenamiento, seleccione "Información general", seleccione "Vista JSON" en la esquina derecha y copie el identificador de recurso de la cuenta de almacenamiento.

    Captura de pantalla del identificador de recurso de cuenta para su uso en esta implementación.

    • Para el nombre del contenedor, copie el nombre del contenedor privado que contiene los artefactos.
    • Identificador de recurso de contenedor de almacenamiento de ejemplo: subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Si se muestra el parámetro AzCopy File URI , agregue el URI al azcopy.exe desde el contenedor.

    • Seleccione el archivo y copie su dirección URL:

    Captura de pantalla que muestra la estructura de la organización del contenedor de almacenamiento con azcopy.exe archivo.

    Captura de pantalla que muestra el URI del archivo azcopy.exe.

Parámetros de contenedor privado de ejemplo:

Captura de pantalla que muestra los parámetros de la pestaña Aplicación completados.

  1. Seleccione Review and Create, si se pasan las validaciones, seleccione Create.
  2. Una vez implementados los recursos, compruebe si la aplicación está instalada en la máquina virtual de la aplicación mediante la conexión a la máquina virtual de la aplicación. Conexión a la máquina virtual de la aplicación

Instalación de WinGet

Estructura de carpetas:

- artifacts container
    - WinGet app folder ('winget')
        - WinGet installer ('Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle')
        - Windows UI Library ('Microsoft.UI.Xaml.2.8.x64.appx')
        - main script to schedule install ('main.ps1')
        - script to install and schedule reboot('install_winget.ps1')
        - ('restart.ps1')

Captura de pantalla que muestra los artefactos necesarios para instalar winget en RemoteApp para instalar y administrar otras aplicaciones mediante winget.

  1. Descargue los instaladores y cárguelos en la carpeta winget en el contenedor de almacenamiento.
  2. Creación y carga de scripts
    1. main.ps1
      # This script creates and runs a scheduled task to install the appx package and msix bundle with elevated privileges
      
      $installScriptPath = "C:\winget\install_winget.ps1"
      
      # Create a scheduled task action to run the installation script with elevated permissions
      $taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-ExecutionPolicy Bypass -File $installScriptPath"
      
      # Set the task to start 30 seconds from now
      $taskTrigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds(30)
      $taskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
      
      # Register the scheduled task
      Register-ScheduledTask -TaskName "InstallWinget" -Action $taskAction -Trigger $taskTrigger -Principal $taskPrincipal
      
    2. install_winget.ps1
      Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
      
      Start-Process -FilePath "DISM.exe" -ArgumentList "/Online /Add-ProvisionedAppxPackage /PackagePath:C:\winget\Microsoft.UI.Xaml.2.8.x64.appx /SkipLicense" -NoNewWindow -Wait
      Start-Process -FilePath "DISM.exe" -ArgumentList "/Online /Add-ProvisionedAppxPackage /PackagePath:C:\winget\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle /SkipLicense" -NoNewWindow -Wait
      
      $wingetDir = 'C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.23.1791.0_x64__8wekyb3d8bbwe'
      $currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
      [System.Environment]::SetEnvironmentVariable("Path", "$currentPath;$wingetDir", [System.EnvironmentVariableTarget]::Machine)
      
      # Schedule the reboot script
      $rebootScriptPath = "C:\winget\reboot.ps1"
      $taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-ExecutionPolicy Bypass -File $rebootScriptPath"
      
      # Set the task to start 30 seconds from now
      $taskTrigger = New-ScheduledTaskTrigger -Once -At ((Get-Date).AddSeconds(30))
      $taskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
      
      # Register the scheduled task
      Register-ScheduledTask -TaskName "Reboot" -Action $taskAction -Trigger $taskTrigger -Principal $taskPrincipal
      
    3. restart.ps1
      Restart-Computer -Force
      
  3. Continúe con Implementar plantilla.