Instalação do aplicativo usando a Máquina Virtual RemoteApp

Instale um aplicativo por meio do modelo de catálogo de serviços de Máquina Virtual.

O script de instalação do aplicativo dá suporte aos seguintes cenários:

  • O caso de uso mais comum para a instalação do aplicativo RemoteApp é implantar aplicativos remotos que podem ser acessados de uma Azure Destop Virtual.
  • Instale seus pré-requisitos, como agentes de segurança cibernética e monitoramento.
  • Alterações de configuração de script para conformidade ou configuração de aplicativo.

Note

Essa implantação de exemplo é apenas para fins de demonstração e não representa todas as práticas recomendadas para administração de rede, sistemas ou aplicativos.

Pré-requisitos

O modelo RemoteApp dá suporte ao script para automatizar o processo de instalação de aplicativos e configuração da Máquina Virtual. Antes de começar a usar a instalação do aplicativo RemoteApp, você precisa ter certeza de que tem:

Note

Se a conta de armazenamento estiver em um enclave diferente, crie um endpoint de enclave no enclave em que está a conta de armazenamento. Em seguida, crie uma conexão de enclave entre esse enclave de conta de armazenamento e o enclave em que você está instalando o aplicativo.

Recursos do Azure implantados

  • Máquina Virtual de exemplo do RemoteApp
    • Disk
    • Máquina Virtual do Windows
    • Extensão da máquina virtual Windows

Software implantado

  • Windows
  • Aplicação de sua escolha

Installation

Configurar a Conta de Armazenamento para instalar Visual Studio Code

  1. Adicione a pasta do aplicativo ao contêiner dentro da conta de armazenamento. Diagrama mostrando o método de instalação no mesmo enclave. Diagrama mostrando o método de instalação fora do enclave que contém a conta de armazenamento.
    • Estrutura de Arquivo:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. Baixe o instalador de aplicativo de que você precisa. Neste exemplo, baixe Vscode.exe e carregue o instalador na pasta do aplicativo da conta de armazenamento.
  3. Carregue o script de instalação do aplicativo main.ps1 compatível com a versão do Visual Studio Code que você adicionou à pasta do aplicativo da conta de armazenamento:
        # Main powershell script that installs the application
    
        Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Modelo de instalação

  1. Na página de visão geral da carga de trabalho, selecione +Add an Azure Service.

Captura de tela mostrando a página de visão geral da carga de trabalho.

  1. Para Service, selecione Virtual Machine.

Captura de tela mostrando a Máquina Virtual selecionada na lista de catálogos de serviços.

  1. Confirmar a seleção do grupo de recursos e selecionar Next

  2. Aba Noções básicas:

    • Para Virtual Machine name, insira o nome da Máquina Virtual.
    • Para Admin username e Admin password, insira o nome de usuário e a senha que você usa para fazer logon em sua Máquina Virtual.
  3. Aba do aplicativo:

    • Para App folder URI, insira o URI no contêiner. Selecione um artefato dentro do contêiner, copie seu URI e remova tudo após o nome da pasta no URI. Captura de tela mostrando o URI da pasta do aplicativo para uso nesta implantação.

      URI original URI corrigido
      <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>/<script>.ps1 <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>
    • Exemplo:

      • storageaccountexample.blob.core.windows.net/artifacts/vscode
    • Para Main Script inserir o nome (ex: main.ps1) do script que instala o aplicativo.

    Exibição de tela mostrando a guia Aplicativo durante uma implantação da Máquina Virtual.

Contêiner privado:

  1. Para App folder in private container, selecione true para permitir o acesso da função reader à conta de armazenamento por meio da Máquina Virtual.

  2. Para Storage container resource id, obtenha as três partes a seguir: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Para obter Storage container resource id, na conta de armazenamento, selecione "Visão geral", selecione "Exibição JSON" no canto superior direito e copie o ID do recurso da conta de armazenamento.

    Captura de tela do identificador do recurso da conta para uso nesta implantação.

    • Para o nome do contêiner, copie o nome do contêiner privado que contém os artefatos.
    • Exemplo de ID do recurso de contêiner de armazenamento: subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. Se o parâmetro AzCopy File URI for exibido, adicione o URI do contêiner ao azcopy.exe

    • Selecione o arquivo e copie sua URL:

    Captura de tela mostrando a estrutura organizacional do contêiner de armazenamento com o arquivo azcopy.exe.

    Captura de tela mostrando o URI do arquivo azcopy.exe.

Exemplo de parâmetros de contêiner privado:

Captura de tela com os parâmetros da aba App preenchidos.

  1. Selecione Review and Create; se as validações forem bem-sucedidas, selecione Create.
  2. Depois que os recursos forem implantados, verifique se o aplicativo está instalado na Máquina Virtual do aplicativo conectando-se à Máquina Virtual do Aplicativo. Conectar-se à Máquina Virtual do Aplicativo

Instalação do WinGet

Estrutura de pastas:

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

Captura de tela mostrando os artefatos necessários para instalar o winget no RemoteApp para instalar e gerenciar outros aplicativos usando winget.

  1. Baixar os instaladores e enviá-los para a pasta winget no contêiner de armazenamento
  2. Criar e fazer upload de 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. Continuar a implantar o modelo