Anwendungsinstallation mit einem virtuellen RemoteApp-Computer

Installieren Sie eine Anwendung über die Vorlage für den Dienstkatalog für virtuelle Computer.

Das Anwendungsinstallationsskripting unterstützt die folgenden Szenarien:

  • Der häufigste Anwendungsfall für die RemoteApp-App-Installation besteht darin, Remoteanwendungen bereitzustellen, auf die über ein Azure Virtual Destop zugegriffen werden kann.
  • Installieren Sie Ihre erforderlichen Komponenten, z. B. Cybersicherheits- und Überwachungs-Agents.
  • Änderungen an der Skriptkonfiguration zur Compliance oder Anwendungskonfiguration.

Note

Diese Beispielbereitstellung dient nur zu Demozwecken und stellt nicht alle bewährten Methoden für die Verwaltung von Netzwerken, Systemen oder Anwendungen dar.

Voraussetzungen

Die RemoteApp-Vorlage unterstützt skripting, um den Prozess der Installation von Anwendungen zu automatisieren und den virtuellen Computer zu konfigurieren. Bevor Sie mit der Verwendung der RemoteApp-App-Installation beginnen können, müssen Sie folgendes sicherstellen:

  • Eine Community, Enklave, Workload und mindestens eine Workload-Ressourcengruppe und Berechtigungen zum Erstellen von Ressourcen innerhalb der Workload-Ressourcengruppe.
  • Aktivieren Sie Advancedden Wartungsmodus für Ihre Enklave, damit Sie die Private Link Ressourcen zu Ihrer verwalteten Ressourcengruppe hinzufügen können.
  • Ein Container (Artefakte) im Speicherkonto.
  • Ein Community-Endpunkt für das Storage-Konto und optional auch für eine vorhandene Kopie von AzCopy.exe.
  • Eine Kopie von AzCopy.exe
    • Laden Sie AzCopy herunter.
    • Laden Sie das AzCopy-Installationsprogramm auf das Speicherkonto auf derselben Ebene wie Ihr App-Ordner hoch.
    • Dateistruktur:
          - storage account
              - artifacts container
                  - app folder
                  - azcopy.exe 
      
      Screenshot der Organisationsstruktur des Speichercontainers mit mehreren App-Ordnern im selben Container, die dieselbe Kopie von AzCopy.exe verwenden.
  • Enklavenverbindungen zwischen den zuvor hergestellten Communityendpunkten und dem Enklavensubnetz.

Note

Wenn sich das Speicherkonto in einer anderen Enklave befindet, erstellen Sie einen Enklavenendpunkt in der Enklave mit dem Speicherkonto. Erstellen Sie dann eine Enklaveverbindung zwischen dieser Speicherkonto-Enklave und der Enklave, in der Sie die Anwendung installieren.

Bereitgestellte Azure-Ressourcen

  • RemoteApp-Beispiel für einen virtuellen Computer
    • Datenträger
    • Virtueller Windows-Computer
    • Windows-Erweiterung für virtuelle Computer

Bereitgestellte Software

  • Windows
  • Anwendung Ihrer Wahl

Installation

Einrichten des Speicherkontos zum Installieren von Visual Studio Code

  1. Fügen Sie dem Container im Speicherkonto App-Ordner hinzu. Diagramm, das die Installationsmethode innerhalb derselben Enklave zeigt. Diagramm, das die Methode der Installation außerhalb der Enklave zeigt, die das Speicherkonto enthält.
    • Dateistruktur:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. Laden Sie das benötigte Anwendungsinstallationsprogramm herunter. In diesem Beispiel laden Sie Vscode.exe herunter, und laden Sie das Installationsprogramm in den Ordner "Speicherkonto-App" hoch.
  3. Laden Sie das main.ps1 Installer-Skript hoch, das mit der Version von Visual Studio Code kompatibel ist, die Sie dem App-Ordner des Speicherkontos hinzugefügt haben:
        # Main powershell script that installs the application
    
        Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Setupvorlage

  1. Wählen Sie auf der Seite "Workloadübersicht" die Option +Add an Azure Serviceaus.

Bildschirmfoto der Seite mit der Workloadübersicht.

  1. Wählen Sie Service für Virtual Machine aus.

Screenshot, der zeigt, dass „Virtuelle Maschine“ in der Dienstkatalogliste ausgewählt ist.

  1. Bestätigen Sie die Auswahl der Ressourcengruppe, und wählen Sie Next

  2. Registerkarte "Grundlagen":

    • Für Virtual Machine name geben Sie den Namen der virtuellen Maschine ein.
    • Geben Sie für Admin username und Admin password den Benutzernamen und das Kennwort ein, die Sie zum Anmelden bei Ihrer virtuellen Maschine verwenden.
  3. App-Tab:

    • Geben Sie für App folder URI den URI in den Container ein. Wählen Sie ein Artefakt innerhalb des Containers aus, kopieren Sie den URI, entfernen Sie alles nach dem Ordnernamen im URI. Screenshot mit dem URI des Anwendungsordners zur Verwendung bei dieser Bereitstellung.

      Ursprünglicher URI Feste URI
      <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>/<script>.ps1 <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>
    • Beispiel:

      • storageaccountexample.blob.core.windows.net/artifacts/vscode
    • Geben Sie in Main Script den Namen (z. B. main.ps1) des Skripts ein, das die Anwendung installiert.

    Bildschirmpräsentation mit der Registerkarte

Privater Container:

  1. Wählen Sie für App folder in private containertrue aus, um der Rolle reader über die virtuelle Maschine Zugriff auf das Speicherkonto zu gewähren.

  2. Für Storage container resource id die folgenden drei Teile abrufen: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Um Storage container resource id aus dem Speicherkonto abzurufen, wählen Sie „Übersicht“ und dann ganz rechts „JSON-Ansicht“ aus, und kopieren Sie die Ressourcen-ID des Speicherkontos.

    Screenshot der Ressourcen-ID des Kontos zur Verwendung in dieser Bereitstellung.

    • Kopieren Sie für den Containernamen den Namen des privaten Containers, der die Artefakte enthält.
    • Beispiel für eine Speichercontainerressourcen-ID: subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Wenn der Parameter AzCopy File URI angezeigt wird, fügen Sie den URI zum azcopy.exe aus dem Container hinzu

    • Wählen Sie die Datei aus, und kopieren Sie die URL:

    Screenshot der Struktur der Speichercontainerorganisation mit azcopy.exe Datei.

    Screenshot mit dem URI für die azcopy.exe-Datei.

Beispielparameter für private Container:

Screenshot mit den ausgefüllten Parametern der Registerkarte „App“.

  1. Wählen Sie Review and Create aus, und wenn die Validierungen erfolgreich sind, wählen Sie Create.
  2. Nachdem Ressourcen bereitgestellt wurden, überprüfen Sie, ob die App auf dem virtuellen Anwendungscomputer installiert ist, indem Sie eine Verbindung mit dem virtuellen Anwendungscomputer herstellen. Herstellen einer Verbindung mit dem virtuellen Anwendungscomputer

WinGet-Installation

Ordnerstruktur:

- 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 mit den Artefakten, die zum Installieren von Winget auf der RemoteApp erforderlich sind, um dann andere Anwendungen mit Winget zu installieren und zu verwalten.

  1. Laden Sie Installer herunter, und laden Sie sie in den Winget-Ordner im Speichercontainer hoch.
  2. Erstellen und Hochladen von Skripts
    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. Gehen Sie zu Vorlage bereitstellen.