Programinstallation med remoteApp Virtual Machine

Installera en applikation via tjänstekatalogmallen för virtuell maskin.

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

  • Det vanligaste användningsfallet för installationen av RemoteApp-appen är att distribuera fjärrprogram som kan nås från en Azure Virtual Destop.
  • 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

Installation

Konfigurera lagringskonto för att installera Visual Studio Code

  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 det här exemplet laddar du nedVscode.exe och laddar upp installationsprogrammet till mappen för lagringskontoappen.
  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' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Konfigurationsmall

  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 valet av resursgrupp och välj Next

  2. Fliken Grundläggande:

    • För Virtual Machine name, ange namnet på den virtuella datorn.
    • För Admin username och Admin passwordanger du det användarnamn och lösenord som du använder för att logga in på den virtuella datorn.
  3. Appflik:

    • För App folder URI, ange URI:n till containern. Välj en artefakt i containern, kopiera dess URI, 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 Main Script anger du namnet (t.ex. main.ps1) på skriptet som installerar programmet.

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

Privat container:

  1. För App folder in private container väljer du true för att ge rollen reader åtkomst till lagringskontot via den virtuella datorn.

  2. För Storage container resource id hämtar du följande tre delar: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Om du vill hämta Storage container resource idfrån lagringskontot väljer du "Översikt", väljer "JSON-vy" längst till höger och kopierar resurs-ID:t för lagringskontot.

    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/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Om parametern AzCopy File URI visas lägger du till URI:n i 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 Review and Create, om valideringarna godkänns väljer du Create.
  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

WinGet-installation

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')
        - ('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 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. Fortsätt till Distribuera mall