Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use o modelo de catálogo de serviço de Máquina Virtual para instalar e configurar um aplicativo em uma máquina virtual RemoteApp.
O script de instalação do aplicativo dá suporte aos seguintes cenários:
- O caso de uso mais comum para a instalação de aplicativos RemoteApp é implantar aplicativos remotos que você pode acessar por meio do Área de Trabalho Virtual do Azure.
- 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:
- Uma comunidade, um enclave, uma carga de trabalho e pelo menos um grupo de recursos da carga de trabalho, além de permissões para criar recursos dentro do grupo de recursos da carga de trabalho.
- Habilite
Advancedo modo de manutenção para o enclave para que você possa adicionar os recursos Link Privado ao grupo de recursos gerenciados pelo enclave. - Um contêiner de artefatos dentro da conta de armazenamento.
- Um endpoint da comunidade para a conta de armazenamento e, opcionalmente, para uma cópia existente do AzCopy.exe.
- Uma cópia do AzCopy.exe
- Baixe o AzCopy.
- Envie o instalador do AzCopy para a conta de armazenamento no mesmo nível que a pasta do aplicativo.
- Estrutura do arquivo:
- storage account - artifacts container - app folder - azcopy.exe
- Conexões de enclave entre os endpoints da comunidade criados anteriormente e a sub-rede do enclave.
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
Implantar o modelo
Prepare os arquivos do aplicativo
- Adicione a pasta do aplicativo ao contêiner dentro da conta de armazenamento.
- Estrutura do arquivo:
- artifacts container - app folder - app installer - main script to install app - (optional) additional scripts - (optional) azcopy.exe
- Estrutura do arquivo:
- Baixe o instalador de aplicativo de que você precisa. Neste exemplo, baixe o Visual Studio Code e faça upload do instalador para a pasta do app da conta de armazenamento.
- Carregue o script de instalação do aplicativo
main.ps1compatí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' -ArgumentList '/VERYSILENT /MERGETASKS=!runcode'
Configurar o modelo
- Na página de visão geral da carga de trabalho, selecione
+Add an Azure Service.
- Para
Service, selecioneVirtual Machine.
Confirme a seleção do grupo de recursos e então selecione Próximo.
Aba Noções básicas:
- Para
Virtual Machine name, insira o nome da Máquina Virtual. - Para nome de usuário do administrador e senha do administrador, insira o nome de usuário e a senha que você usa para fazer login na sua máquina virtual.
- Para
Aba do aplicativo:
Para o URI da pasta do aplicativo, insira o URI do container. Selecione um artefato dentro do container, copie seu URI e remova tudo que vem após o nome da pasta no URI.
URI original URI fixo <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 o Script Principal, insira o nome (por exemplo,
main.ps1) do script que instala o aplicativo.
Contêiner privado:
Para Pasta do aplicativo no contêiner privado, selecione
truepara conceder à identidade da máquina virtual acesso em nível de contêinerStorage Blob Data Reader.Para o ID de recurso do contêiner de armazenamento, combine estas três partes:
<storage-account-resource-id>+/blobServices/default/containers/+<container-name>.- Para obter ID do recurso do contêiner de armazenamento, na conta de armazenamento, selecione Visão geral, selecione Visualização JSON no canto superior direito e copie o ID do recurso da conta de armazenamento.
- 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/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/resource-group-example/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
Se o parâmetro URI do arquivo AzCopy for exibido, insira o URI para
azcopy.exedo contêiner.- Selecione o arquivo e copie sua URL:
Exemplo de parâmetros de contêiner privado:
- Selecione Examinar e criar. Se a validação for aprovada, selecione Criar.
- 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
Instale o WinGet e aplicativos adicionais
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')
- script to restart the virtual machine ('restart.ps1')
- Baixar os instaladores e enviá-los para a pasta winget no contêiner de armazenamento
- pacote do WinGet
MSIX(Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle) - Biblioteca de interface do usuário do Windows (Microsoft. UI. Xaml.2.8.x64.appx)
- pacote do WinGet
- Criar e fazer upload de scripts
- 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 - 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 - restart.ps1
Restart-Computer -Force
- main.ps1
- Proceda para configurar o template.