Installazione dell'applicazione tramite la macchina virtuale RemoteApp

Installare un'applicazione tramite il modello di catalogo del servizio macchina virtuale.

Lo scripting dell'installazione dell'applicazione supporta gli scenari seguenti:

  • Il caso d'uso più comune per l'installazione dell'app RemoteApp consiste nel distribuire applicazioni remote a cui è possibile accedere da un Azure Destop virtuale.
  • Installare i prerequisiti, ad esempio gli agenti di sicurezza informatica e monitoraggio.
  • Modifiche alla configurazione dello script per la conformità o l'installazione dell'applicazione.

Note

Questa distribuzione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per l'amministrazione di rete, sistemi o applicazioni.

Prerequisiti

Il modello RemoteApp supporta lo scripting per automatizzare il processo di installazione delle applicazioni e la configurazione della macchina virtuale. Prima di iniziare a usare l'installazione dell'app RemoteApp, è necessario assicurarsi di disporre di:

Note

Se l'account di archiviazione si trova in un'enclave diversa, creare un endpoint enclave nell'enclave che contiene l'account di archiviazione. Creare quindi una connessione enclave tra l'enclave dell'account di archiviazione e l'enclave in cui si installa l'applicazione.

risorse Azure distribuite

  • Macchina virtuale di esempio di RemoteApp
    • Disco
    • Macchina virtuale Windows
    • estensione della macchina virtuale Windows

Software distribuito

  • Windows
  • Applicazione a scelta

Installazione

Configurare l'account di archiviazione per installare Visual Studio Code

  1. Aggiungere la cartella dell'app al contenitore all'interno dell'account di archiviazione. Diagramma che mostra il metodo di installazione all'interno della stessa enclave. Diagramma che mostra il metodo di installazione all'esterno dell'enclave che contiene l'account di archiviazione.
    • Struttura dei file:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. Scaricare il programma di installazione dell'applicazione necessario. In questo esempio scaricare Vscode.exe e caricare il programma di installazione nella cartella dell'app dell'account di archiviazione.
  3. Caricare lo script di installazione dell'applicazione main.ps1 compatibile con la versione di Visual Studio Code aggiunta alla cartella app dell'account di archiviazione:
        # Main powershell script that installs the application
    
        Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Modello di installazione

  1. Nella pagina di panoramica del carico di lavoro selezionare +Add an Azure Service.

Screenshot che mostra la pagina di panoramica del carico di lavoro.

  1. Per Serviceselezionare Virtual Machine.

Screenshot che mostra la macchina virtuale selezionata nell'elenco del catalogo dei servizi.

  1. Confermare la selezione del gruppo di risorse e selezionare Next

  2. Scheda Informazioni di base:

    • Per Virtual Machine name, immettere il nome della macchina virtuale.
    • Per Admin username e Admin passwordimmettere il nome utente e la password usati per accedere alla macchina virtuale.
  3. Scheda dell'app:

    • Per App folder URI, immettere l'URI nel contenitore. Selezionare un artefatto all'interno del contenitore, copiarne l'URI, rimuovere tutti gli elementi dopo il nome della cartella nell'URI. Screenshot che mostra l'URI della cartella dell'applicazione da usare in questa distribuzione.

      URI originale URI fisso
      <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
    • Per Main Script immettere il nome (ad esempio: main.ps1) dello script che installa l'applicazione.

    Schermata che mostra la scheda App durante la distribuzione di una macchina virtuale.

Contenitore privato:

  1. Per App folder in private container, selezionare true per consentire al ruolo reader di accedere all'account di archiviazione tramite la macchina virtuale.

  2. Per Storage container resource id ottenere le tre parti seguenti: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Per ottenere Storage container resource id, dall'account di archiviazione selezionare "Panoramica", selezionare "Visualizzazione JSON" nell'angolo all'estrema destra, copiare l'ID risorsa dell'account di archiviazione.

    Schermata dell'ID della risorsa dell'account da usare in questa distribuzione.

    • Per il nome del contenitore, copiare il nome del contenitore privato che contiene gli artefatti.
    • ID risorsa del contenitore di archiviazione di esempio: subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Se il parametro AzCopy File URI viene visualizzato, aggiungere l'URI al azcopy.exe dal contenitore

    • Selezionare il file e copiarne l'URL:

    Screenshot che mostra la struttura dell'organizzazione del contenitore di archiviazione con azcopy.exe file.

    Screenshot che mostra l'URI per il file azcopy.exe.

Parametri del contenitore privato di esempio:

Schermata che mostra i parametri della scheda App compilati.

  1. Selezionare Review and Create; se la convalida ha esito positivo, selezionare Create.
  2. Dopo la distribuzione delle risorse, verificare se l'app è installata nella macchina virtuale dell'applicazione connettendosi alla macchina virtuale dell'applicazione. Connettersi alla macchina virtuale dell'applicazione

Installazione di WinGet

Struttura cartelle:

- 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')

Screenshot che mostra gli artefatti necessari per installare winget in RemoteApp per installare e gestire altre applicazioni usando winget.

  1. Scaricare i programmi di installazione e caricarli nella cartella winget nel contenitore di archiviazione
  2. Creare e caricare script
    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. Procedere alla distribuzione del modello