Applikationsinstallation med hjälp av en RemoteApp-virtuell maskin

Använd mall för Virtual Machine-tjänstekatalogen för att installera och konfigurera en applikation på en virtuell RemoteApp-maskin.

Skriptet för programinstallation stöder följande scenarier:

  • Det vanligaste användningsområdet för installation av RemoteApp-applikationer är att distribuera fjärrapplikationer som du kan komma åt från Azure Virtual Desktop.
  • Installera nödvändiga komponenter, till exempel agenter för cybersäkerhet och övervakning.
  • Skriptkonfigurationsändringar för kompatibilitet eller programkonfiguration.

Note

Den här exempeldistributionen är bara i demosyfte och representerar inte alla metodtips för administration av nätverk, system eller program.

Förutsättningar

RemoteApp-mallen stöder skript för att automatisera processen med att installera program och konfigurera den virtuella datorn. Innan du kan börja använda installationen av RemoteApp-appen måste du kontrollera att du har:

Note

Om lagringskontot finns i en annan enklav skapar du en enklavslutpunkt i enklaven med lagringskontot. Skapa sedan en enklavanslutning mellan den lagringskonto enklaven och enklaven där du installerar programmet.

Azure-resurser har distribuerats

  • Virtuell dator för RemoteApp-exempel
    • Disk
    • Virtuell Windows-dator
    • Windows tillägg för virtuella datorer

Programvara distribuerad

  • Windows
  • Valfritt program

Använd mallen

Förbered ansökningsfiler

  1. Lägg till appmappen i containern i lagringskontot. Diagram som visar installationsmetoden i samma enklaver. Diagram som visar metoden för installation utanför enklav som innehåller lagringskontot.
    • Filstruktur:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. Ladda ned programinstallationsprogrammet som du behöver. I detta exempel, ladda ner Visual Studio Code och ladda upp installationsfilen till app-mappen för lagringskontot.
  3. main.ps1 Ladda upp programinstallationsskriptet som är kompatibelt med den version av Visual Studio Code som du lade till i mappen för lagringskontoappen:
        # Main PowerShell script that installs the application
    
        Start-Process 'C:\vscode\VSCodeSetup-x64-<version>.exe' -ArgumentList '/VERYSILENT /MERGETASKS=!runcode'
    

Konfigurera mallen

  1. På översiktssidan för arbetsbelastningen väljer du +Add an Azure Service.

Skärmbild som visar översiktssidan för arbetsbelastningen.

  1. För Serviceväljer du Virtual Machine.

Skärmbild som visar virtuell dator som valts från listan över tjänstkataloger.

  1. Bekräfta resursgruppsvalet och välj sedan Nästa.

  2. Fliken Grundläggande:

    • För Virtual Machine name, ange namnet på den virtuella datorn.
    • För administratörsanvändarnamn och administratörslösenord, ange användarnamnet och lösenordet du använder för att logga in på din virtuella maskin.
  3. Appflik:

    • För App Folder URI, ange URI:n till containern. Välj en artefakt i containern, kopiera dess URI och ta bort allt efter mappnamnet i URI:n. Skärmbild som visar programmappens URI för användning i den här distributionen.

      Ursprunglig URI Fast 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>
    • Exempel:

      • storageaccountexample.blob.core.windows.net/artifacts/vscode
    • För huvudskriptet, ange namnet (till exempel main.ps1) på skriptet som installerar applikationen.

    Skärmdump som visar fliken App under distribution av en virtuell dator.

Privat container:

  1. För App-mappen i privat container, välj true för att ge den virtuella maskinens identitet åtkomst på containernivå Storage Blob Data Reader.

  2. För Storage container resource id, kombinera dessa tre delar: <storage-account-resource-id> + /blobServices/default/containers/ + <container-name>.

    • För att få Storage container resource id, välj från lagringskontot Översikt, välj JSON View längst till höger och kopiera lagringskontots resurs-ID.

    Skärmbild av kontoresurs-ID för användning i den här distributionen.

    • För containernamnet kopierar du namnet på den privata container som innehåller artefakterna.
    • Exempel på resurs-ID för lagringscontainer: /subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/resource-group-example/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Om parametern AzCopy File URI visas, ange URI:n för azcopy.exe från containern.

    • Välj filen och kopiera dess URL:

    Skärmbild som visar organisationens struktur för lagringscontainer med azcopy.exe fil.

    Skärmbild som visar URI:n för azcopy.exe-filen.

Exempel på privata containerparametrar:

Skärmbild som visar att parametrarna för fliken App har slutförts.

  1. Välj Granska och skapa. Om verifieringen godkänns väljer du Skapa.
  2. När resurserna har distribuerats kontrollerar du om appen är installerad på programmets virtuella dator genom att ansluta till den virtuella programdatorn. Ansluta till den virtuella programdatorn

Installera WinGet och ytterligare applikationer

Mappstrukturen:

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

Skärmbild som visar artefakterna som behövs för att installera winget på RemoteApp för att sedan installera och hantera andra program med winget.

  1. Ladda ned installationsprogram och ladda upp dem till winget-mappen i lagringscontainern
  2. Skapa och ladda upp skript
    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. Gå vidare till Konfigurera mallen.