Installation d’applications en utilisant une machine virtuelle RemoteApp

Utilisez le modèle de catalogue de services Virtual Machine pour installer et configurer une application sur une machine virtuelle RemoteApp.

Le script d’installation d’application prend en charge les scénarios suivants :

  • Le cas d’utilisation le plus courant pour l’installation d’applications RemoteApp est de déployer des applications distantes accessibles depuis Azure Virtual Desktop.
  • Installez vos prérequis, tels que les agents de cybersécurité et de surveillance.
  • Modifications de configuration de script pour la conformité ou la configuration de l’application.

Note

Cet exemple de déploiement est uniquement à des fins de démonstration et ne représente pas toutes les meilleures pratiques pour l’administration du réseau, des systèmes ou des applications.

Prerequisites

Le modèle RemoteApp prend en charge les scripts pour automatiser le processus d’installation des applications et la configuration de la machine virtuelle. Avant de commencer à utiliser l’installation de l’application RemoteApp, vous devez vous assurer que vous disposez des éléments suivants :

Note

Si le compte de stockage se trouve dans une autre enclave, créez un point de terminaison d’enclave dans l’enclave avec le compte de stockage. Créez ensuite une connexion d’enclave entre cette enclave de compte de stockage et l’enclave où vous installez l’application.

ressources Azure déployées

  • Exemple de machine virtuelle RemoteApp
    • Disque
    • machine virtuelle Windows
    • extension de machine virtuelle Windows

Logiciel déployé

  • Windows
  • Application de votre choix

Déployer le modèle

Préparer les fichiers de candidature

  1. Ajoutez un dossier d’application au conteneur dans le compte de stockage. Diagramme montrant la méthode d’installation dans la même enclave. Diagramme montrant la méthode d’installation en dehors de l’enclave qui contient le compte de stockage.
    • Structure du fichier :
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. Téléchargez le programme d’installation de l’application dont vous avez besoin. Dans cet exemple, téléchargez Visual Studio Code et téléversez le programme d’installation dans le dossier app du compte de stockage.
  3. Téléchargez le script d’installation de l’application main.ps1 compatible avec la version de Visual Studio Code que vous avez ajoutée dans le dossier d’application du compte de stockage :
        # Main PowerShell script that installs the application
    
        Start-Process 'C:\vscode\VSCodeSetup-x64-<version>.exe' -ArgumentList '/VERYSILENT /MERGETASKS=!runcode'
    

Configurer le modèle

  1. Dans la page vue d’ensemble de la charge de travail, sélectionnez +Add an Azure Service.

Capture d’écran montrant la page vue d’ensemble de la charge de travail.

  1. Pour Service, sélectionnez Virtual Machine.

Capture d’écran montrant la machine virtuelle sélectionnée dans la liste du catalogue de services.

  1. Confirmez la sélection du groupe de ressources, puis sélectionnez Suivant.

  2. Onglet Informations de base :

    • Pour Virtual Machine name, entrez le nom de la machine virtuelle.
    • Pour le nom d’utilisateur administrateur et le mot de passe administrateur, saisissez le nom d’utilisateur et le mot de passe que vous utilisez pour vous connecter à votre machine virtuelle.
  3. Onglet de l’application :

    • Pour l’URI du dossier App, saisissez l’URI du conteneur. Sélectionnez un artefact dans le conteneur, copiez son URI, et supprimez tout ce qui suit le nom du dossier dans l’URI. Capture d’écran montrant l’URI du dossier d’application à utiliser dans ce déploiement.

      URI d’origine URI fixe
      https://<storage-account>.blob.core.windows.net//<container-name><folder-name>/<script>.ps1 <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>
    • Exemple :

      • storageaccountexample.blob.core.windows.net/artifacts/vscode
    • Pour le script principal, saisissez le nom (par exemple, main.ps1) du script qui installe l’application.

    Capture d’écran montrant l’onglet App lors d’un déploiement sur une machine virtuelle.

Conteneur privé :

  1. Pour le dossier App dans un conteneur privé, sélectionnez true pour accorder à l’identité de la machine virtuelle un accès au niveau Storage Blob Data Reader du conteneur.

  2. Pour l’identifiant de ressource du conteneur de stockage, combinez ces trois parties : <storage-account-resource-id><container-name> + /blobServices/default/containers/ + .

    • Pour obtenir l’identifiant de ressource du conteneur de stockage, depuis le compte de stockage, sélectionnez Vue d’ensemble, choisissez Vue JSON tout à droite, et copiez l’identifiant de ressource du compte de stockage.

    Capture d’écran de l’ID de ressource de compte à utiliser dans ce déploiement.

    • Pour le nom du conteneur, copiez le nom du conteneur privé qui contient les artefacts.
    • Exemple d’ID de ressource de conteneur de stockage : /subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/resource-group-example/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Si le paramètre AzCopy File URI est affiché, entrez l’URI de azcopy.exe depuis le conteneur.

    • Sélectionnez le fichier, puis copiez son URL :

    Capture d’écran montrant la structure de l’organisation du conteneur de stockage avec azcopy.exe fichier.

    Capture d’écran montrant l’URI du fichier azcopy.exe.

Exemple de paramètres de conteneur privé :

Capture d’écran montrant les paramètres de l’onglet Application terminés.

  1. Sélectionnez Examiner et créer. Si la validation réussit, sélectionnez Créer.
  2. Une fois les ressources déployées, vérifiez si l’application est installée sur une machine virtuelle d’application en vous connectant à la machine virtuelle d’application. Se connecter à la machine virtuelle d’application

Installer WinGet et applications supplémentaires

Structure de dossiers :

- 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')
        - script to restart the virtual machine ('restart.ps1')

Capture d’écran montrant les artefacts nécessaires pour installer winget sur RemoteApp, puis installer et gérer d’autres applications à l’aide de winget.

  1. Téléchargez les programmes d’installation et chargez-les dans le dossier winget dans le conteneur de stockage
  2. Créer et charger des 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 restart script
      $rebootScriptPath = "C:\winget\restart.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. Procédez à la configuration du modèle.