Installation de l’application à l’aide de la machine virtuelle RemoteApp

Installez une application via un modèle de catalogue de services de machine virtuelle.

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

  • Le cas d’usage le plus courant pour l’installation de l’application RemoteApp consiste à déployer des applications distantes accessibles à partir d’un Azure Virtual Destop.
  • 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

Installation

Configurer le compte de stockage pour installer Visual Studio Code

  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 de fichiers :
          - 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échargezVscode.exe et chargez le programme d’installation dans le dossier d’application 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' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Modèle d’installation

  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. Confirmer la sélection du groupe de ressources et sélectionner Next

  2. Onglet Informations de base :

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

    • Pour App folder URI, entrez l’URI dans le conteneur. Sélectionnez un artefact dans le conteneur, copiez son URI, supprimez tout après 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 Main Script entrer le nom (ex : main.ps1) du script qui installe l’application.

    Écrans montrant l’onglet Application pendant un déploiement de machine virtuelle.

Conteneur privé :

  1. Pour App folder in private container, sélectionnez true pour autoriser le rôle reader à accéder au compte de stockage via la machine virtuelle.

  2. Pour Storage container resource id obtenir les trois parties suivantes : <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Pour obtenir Storage container resource id, dans le compte de stockage, sélectionnez « Vue d’ensemble », puis « Vue JSON » dans le coin à l’extrême droite, et copiez l’ID 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/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Si le paramètre AzCopy File URI est affiché, ajoutez l’URI au azcopy.exe à partir du 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 Review and Create, si les validations réussissent, sélectionnez Create.
  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

Installation de WinGet

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')
        - ('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 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. Passer au modèle de déploiement