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.
Instale uma aplicação através do modelo do catálogo de serviços da máquina virtual.
O script de instalação da aplicação suporta os seguintes cenários:
- O caso de uso mais comum para a instalação da aplicação RemoteApp é implementar aplicações remotas que possam ser acedidas a partir de um Virtual Destop do Azure.
- 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 (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
Instalação
Configurar uma Conta de Armazenamento para instalar o Visual Studio Code
- 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, descarregueVscode.exe e carregue o instalador na pasta da aplicação 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' -Argument "/VERYSILENT /MERGETASKS=!runcode"
Modelo de Configuração
- Na página de visão geral da carga de trabalho, selecione
+Add an Azure Service.
- Para
Service, selecioneVirtual Machine.
Confirma a seleção do grupo de recursos e seleciona
NextSeparador Noções básicas:
- Para
Virtual Machine name, introduza o nome da Máquina Virtual. - Para
Admin usernameeAdmin password, 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
App folder URI, introduza o URI do contentor. Selecione um artefacto dentro do contentor, copie o seu URI, remova tudo o que estiver 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
Em
Main Script, introduza o nome (ex:main.ps1) do script que instala a aplicação.
Contentor privado:
Para
App folder in private container, selecionetruepara permitir que a funçãoreaderaceda à conta de armazenamento por meio da Máquina Virtual.Para
Storage container resource id, obtenha as três partes seguintes:<storage-account-resource-id>+ '/blobServices/default/containers/' +<container-name>.- Para obter
Storage container resource id, da conta de armazenamento, selecione "Visão Geral", selecione "Visualização JSON" no canto mais à direita, 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/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
- Para obter
Se o parâmetro
AzCopy File URIfor apresentado, adicione o URI do contentor ao azcopy.exe- Selecione o ficheiro e copie o seu URL:
Exemplos de Parâmetros de Contentores Privados:
- Selecione
Review and Create, se as validações passarem, selecioneCreate. - 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
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')
- 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 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 - restart.ps1
Restart-Computer -Force
- main.ps1
- Proceder à Implementação do Modelo