Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Utilize o modelo de catálogo de serviço de Máquinas Virtuais para instalar e configurar uma aplicação numa máquina virtual RemoteApp.
O script de instalação da aplicação suporta os seguintes cenários:
- O caso de uso mais comum para a instalação de aplicações RemoteApp é implementar aplicações remotas às quais pode aceder a partir de um Azure Virtual Desktop.
- Instale os seus pré-requisitos, como cibersegurança e agentes de monitorização.
- Alterações na configuração dos scripts para conformidade ou configuração de aplicações.
Note
Este exemplo de implementação é apenas para fins de demonstração e não representa todas as melhores práticas para administração de redes, sistemas ou aplicações.
Pré-requisitos
O modelo RemoteApp suporta scripts para automatizar o processo de instalação de aplicações e configuração da Máquina Virtual. Antes de poder começar a usar a instalação da aplicação RemoteApp, precisa de garantir que tem:
- Uma comunidade, um enclave, uma carga de trabalho e, pelo menos, um grupo de recursos da carga de trabalho, bem como permissões para criar recursos dentro do grupo de recursos da carga de trabalho.
- Ative
Advancedo modo de manutenção do seu enclave para que possa adicionar os recursos Private Link ao seu grupo de recursos geridos pelo enclave. - Um contentor de artefactos 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 de AzCopy.exe
- Baixar AzCopy.
- Carrega o instalador do AzCopy para a conta de armazenamento ao mesmo nível da pasta da tua app.
- Estrutura do ficheiro:
- storage account - artifacts container - app folder - azcopy.exe
- Ligações do enclave entre os endpoints da comunidade previamente criados e a sub-rede do enclave.
Note
Se a conta de armazenamento estiver num enclave diferente, crie um endpoint de enclave no enclave onde se encontra a conta de armazenamento. Depois, crie uma ligação entre enclaves entre esse enclave da conta de armazenamento e o enclave onde está a instalar a aplicação.
Recursos do Azure implementados
- Exemplo de máquina virtual RemoteApp
- Disk
- Máquina Virtual do Windows
- Extensão de Máquina Virtual para Windows
Software instalado
- Windows
- Aplicação à sua escolha
Implementar o modelo
Preparar ficheiros de candidatura
- Adicionar a pasta da app ao contentor dentro da conta de armazenamento.
- Estrutura do ficheiro:
- artifacts container - app folder - app installer - main script to install app - (optional) additional scripts - (optional) azcopy.exe
- Estrutura do ficheiro:
- Descarregue o instalador de aplicações de que precisa. Neste exemplo, descarregue o Visual Studio Code e faça upload do instalador para a pasta da app da conta de armazenamento.
- Carrega o
main.ps1script instalador da aplicação compatível com a versão do Visual Studio Code que adicionaste à pasta 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 depois selecione Next.
Separador Noções básicas:
- Para
Virtual Machine name, introduza o nome da Máquina Virtual. - Para o nome de utilizador de administrador e a palavra-passe de administrador, introduza o nome de utilizador e a palavra-passe que usa para iniciar sessão na sua máquina virtual.
- Para
Separador da aplicação:
Para o URI da pasta da App, introduza o URI do contentor. Seleciona um artefacto dentro do contentor, copia o seu URI e remove tudo o que vem depois do nome da pasta no URI.
URI original URI fixo https:// <storage-account>.blob.core.windows.net//<container-name><folder-name>/<script>.ps1https:// <storage-account>.blob.core.windows.net/<container-name>/<folder-name>Example:
- storageaccountexample.blob.core.windows.net/artifacts/vscode
Para o Script Principal, introduza o nome (por exemplo,
main.ps1) do script que instala a aplicação.
Contentor privado:
Para a pasta App num contentor privado, selecione
truepara conceder à identidade da máquina virtual acessoStorage Blob Data Readerao nível do contentor.Para o ID de recurso do contentor de armazenamento, combine estas três partes:
<storage-account-resource-id>+/blobServices/default/containers/+<container-name>.- Para obter o ID do recurso do contentor de armazenamento, da conta de armazenamento, selecione Visão Geral, selecione Vista JSON no canto mais à direita e copie o ID do recurso da conta de armazenamento.
- Para o nome do contentor, copie o nome do contentor privado que contém os artefactos.
- Exemplo de ID de recurso do contentor 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 ficheiro AzCopy for apresentado, introduza o URI do contentor para
azcopy.exe.- Selecione o ficheiro e copie o seu URL:
Exemplos de Parâmetros de Contentores Privados:
- Selecione Rever e Criar. Se a validação passar, selecione Criar.
- Depois de os recursos serem implementados, verifique se a aplicação está instalada na Máquina Virtual da aplicação, ligando-se à Máquina Virtual da Aplicação. Liga-se à Máquina Virtual da Aplicação
Instalar o WinGet e aplicações adicionais
Estrutura da pasta:
- 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')
- Descarregue instaladores e carregue-os para a pasta winget no contentor de armazenamento
- Pacote WinGet
MSIX(Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle) - Biblioteca da IU do Windows (Microsoft. UI. Xaml.2.8.x64.appx)
- Pacote WinGet
- Criar e transferir 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 à Configurar o modelo.