Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Instale una aplicación a través de una plantilla de catálogo de servicios de máquina virtual.
El scripting de instalación de aplicaciones admite los siguientes escenarios:
- El caso de uso más común para la instalación de la aplicación RemoteApp es implementar aplicaciones remotas a las que se puede acceder desde un Azure Destop virtual.
- Instale los requisitos previos, como la seguridad cibernética y los agentes de supervisión.
- Cambios en la configuración del script para la conformidad o la configuración de la aplicación.
Note
Esta implementación de ejemplo es solo para fines de demostración y no representa todos los procedimientos recomendados para la administración de redes, sistemas o aplicaciones.
Prerequisites
La plantilla remoteApp admite scripting para automatizar el proceso de instalación de aplicaciones y la configuración de la máquina virtual. Antes de empezar a usar la instalación de la aplicación RemoteApp, debe asegurarse de que tiene:
- Una comunidad, un enclave, una carga de trabajo y al menos un grupo de recursos de carga de trabajo, y permisos para crear recursos dentro del grupo de recursos de carga de trabajo.
- Habilite
Advancedel modo de mantenimiento para el enclave para poder agregar los recursos de Private Link al grupo de recursos administrados del enclave. - Un contenedor (artefactos) dentro de la cuenta de almacenamiento.
- Un punto de conexión de la comunidad a la cuenta de almacenamiento y, opcionalmente, a una copia existente de AzCopy.exe.
- Una copia de AzCopy.exe
- Descargue AzCopy.
- Cargue el instalador de AzCopy en la cuenta de almacenamiento en el mismo nivel que la carpeta de la aplicación.
- Estructura de archivos:
- storage account - artifacts container - app folder - azcopy.exe
- Conexiones de enclave entre los endpoints de comunidad creados previamente y la subred del enclave.
Note
Si la cuenta de almacenamiento se encuentra en un enclave diferente, crea un punto de conexión de enclave en el enclave donde se encuentra la cuenta de almacenamiento. A continuación, cree una conexión de enclave entre ese enclave de la cuenta de almacenamiento y el enclave donde va a instalar la aplicación.
Recursos de Azure implementados
- Máquina virtual de ejemplo de RemoteApp
- Disco
- Máquina virtual de Windows
- extensión de máquina virtual de Windows
Software implementado
- Windows
- Aplicación que prefiera
Installation
Configuración de la cuenta de almacenamiento para instalar Visual Studio Code
- Agregue la carpeta de la aplicación al contenedor dentro de la cuenta de almacenamiento.
- Estructura de archivos:
- artifacts container - app folder - app installer - main script to install app - (optional) additional scripts - (optional) azcopy.exe
- Estructura de archivos:
- Descargue el instalador de la aplicación que necesita. En este ejemplo, descargue Vscode.exe y cargue el instalador en la carpeta de la aplicación de la cuenta de almacenamiento.
- Cargue el
main.ps1script del instalador de la aplicación compatible con la versión de Visual Studio Code que agregó a la carpeta de aplicaciones de la cuenta de almacenamiento:# Main powershell script that installs the application Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
Plantilla de configuración
- En la página de información general de la carga de trabajo, seleccione
+Add an Azure Service.
- En
Service, seleccioneVirtual Machine.
Confirme la selección del grupo de recursos y seleccione
NextPestaña Conceptos básicos:
- En
Virtual Machine name, escriba el nombre de la máquina virtual. - Para
Admin usernameyAdmin password, escriba el nombre de usuario y la contraseña que use para iniciar sesión en la máquina virtual.
- En
Pestaña Aplicación:
Para
App folder URI, introduzca el URI del contenedor. Seleccione un artefacto dentro del contenedor, copie su URI y quite todo después del nombre de la carpeta en el URI.
URI original URI corregido <storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>/<script>.ps1<storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>Example:
- storageaccountexample.blob.core.windows.net/artifacts/vscode
Para
Main Scriptespecificar el nombre (por ejemplo:main.ps1) del script que instala la aplicación.
Contenedor privado:
Para
App folder in private container, seleccionetruepara permitir que el rolreaderacceda a la cuenta de almacenamiento mediante la máquina virtual.Para
Storage container resource id, obtenga las tres partes siguientes:<storage-account-resource-id>+ '/blobServices/default/containers/' +<container-name>.- Para obtener
Storage container resource id, en la cuenta de almacenamiento, seleccione "Información general", seleccione "Vista JSON" en la esquina derecha y copie el identificador de recurso de la cuenta de almacenamiento.
- Para el nombre del contenedor, copie el nombre del contenedor privado que contiene los artefactos.
- Identificador de recurso de contenedor de almacenamiento de ejemplo:
subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
- Para obtener
Si se muestra el parámetro
AzCopy File URI, agregue el URI al azcopy.exe desde el contenedor.- Seleccione el archivo y copie su dirección URL:
Parámetros de contenedor privado de ejemplo:
- Seleccione
Review and Create, si se pasan las validaciones, seleccioneCreate. - Una vez implementados los recursos, compruebe si la aplicación está instalada en la máquina virtual de la aplicación mediante la conexión a la máquina virtual de la aplicación. Conexión a la máquina virtual de la aplicación
Instalación de WinGet
Estructura de carpetas:
- 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')
- Descargue los instaladores y cárguelos en la carpeta winget en el contenedor de almacenamiento.
- Paquete WinGet
MSIX(Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle) - Biblioteca de interfaz de usuario de Windows (Microsoft.UI.Xaml.2.8.x64.appx)
- Paquete WinGet
- Creación y carga 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 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
- Continúe con Implementar plantilla.