Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisez le modèle de catalogue de services Virtual Machine pour installer et configurer une application sur une machine virtuelle RemoteApp.
Le script d’installation d’application prend en charge les scénarios suivants :
- Le cas d’utilisation le plus courant pour l’installation d’applications RemoteApp est de déployer des applications distantes accessibles depuis Azure Virtual Desktop.
- Installez vos prérequis, tels que les agents de cybersécurité et de surveillance.
- Modifications de configuration de script pour la conformité ou la configuration de l’application.
Note
Cet exemple de déploiement est uniquement à des fins de démonstration et ne représente pas toutes les meilleures pratiques pour l’administration du réseau, des systèmes ou des applications.
Prerequisites
Le modèle RemoteApp prend en charge les scripts pour automatiser le processus d’installation des applications et la configuration de la machine virtuelle. Avant de commencer à utiliser l’installation de l’application RemoteApp, vous devez vous assurer que vous disposez des éléments suivants :
- Une communauté, une enclave, une charge de travail et au moins un groupe de ressources de charge de travail et des autorisations pour créer des ressources à l’intérieur du groupe de ressources de charge de travail.
- Activez
Advancedle mode de maintenance pour votre enclave afin de pouvoir ajouter les ressources Private Link à votre groupe de ressources géré par enclave. - Un conteneur d’artefacts dans le compte de stockage.
- Un point de terminaison communautaire vers le compte de stockage et, éventuellement, vers une copie existante d’AzCopy.exe.
- Copie de AzCopy.exe
- Téléchargez AzCopy.
- Chargez le programme d’installation AzCopy sur le compte de stockage au même niveau que le dossier de votre application.
- Structure du fichier :
- storage account - artifacts container - app folder - azcopy.exe
- Connexions d’enclave entre les points de terminaison communautaires créés précédemment et le sous-réseau d’enclave.
Note
Si le compte de stockage se trouve dans une autre enclave, créez un point de terminaison d’enclave dans l’enclave avec le compte de stockage. Créez ensuite une connexion d’enclave entre cette enclave de compte de stockage et l’enclave où vous installez l’application.
ressources Azure déployées
- Exemple de machine virtuelle RemoteApp
- Disque
- machine virtuelle Windows
- extension de machine virtuelle Windows
Logiciel déployé
- Windows
- Application de votre choix
Déployer le modèle
Préparer les fichiers de candidature
- Ajoutez un dossier d’application au conteneur dans le compte de stockage.
- Structure du fichier :
- artifacts container - app folder - app installer - main script to install app - (optional) additional scripts - (optional) azcopy.exe
- Structure du fichier :
- Téléchargez le programme d’installation de l’application dont vous avez besoin. Dans cet exemple, téléchargez Visual Studio Code et téléversez le programme d’installation dans le dossier app du compte de stockage.
- Téléchargez le script d’installation de l’application
main.ps1compatible avec la version de Visual Studio Code que vous avez ajoutée dans le dossier d’application du compte de stockage :# Main PowerShell script that installs the application Start-Process 'C:\vscode\VSCodeSetup-x64-<version>.exe' -ArgumentList '/VERYSILENT /MERGETASKS=!runcode'
Configurer le modèle
- Dans la page vue d’ensemble de la charge de travail, sélectionnez
+Add an Azure Service.
- Pour
Service, sélectionnezVirtual Machine.
Confirmez la sélection du groupe de ressources, puis sélectionnez Suivant.
Onglet Informations de base :
- Pour
Virtual Machine name, entrez le nom de la machine virtuelle. - Pour le nom d’utilisateur administrateur et le mot de passe administrateur, saisissez le nom d’utilisateur et le mot de passe que vous utilisez pour vous connecter à votre machine virtuelle.
- Pour
Onglet de l’application :
Pour l’URI du dossier App, saisissez l’URI du conteneur. Sélectionnez un artefact dans le conteneur, copiez son URI, et supprimez tout ce qui suit le nom du dossier dans l’URI.
URI d’origine URI fixe https:// <storage-account>.blob.core.windows.net//<container-name><folder-name>/<script>.ps1<storage-account>https://.blob.core.windows.net/<container-name>/<folder-name>Exemple :
- storageaccountexample.blob.core.windows.net/artifacts/vscode
Pour le script principal, saisissez le nom (par exemple,
main.ps1) du script qui installe l’application.
Conteneur privé :
Pour le dossier App dans un conteneur privé, sélectionnez
truepour accorder à l’identité de la machine virtuelle un accès au niveauStorage Blob Data Readerdu conteneur.Pour l’identifiant de ressource du conteneur de stockage, combinez ces trois parties :
<storage-account-resource-id><container-name>+/blobServices/default/containers/+ .- Pour obtenir l’identifiant de ressource du conteneur de stockage, depuis le compte de stockage, sélectionnez Vue d’ensemble, choisissez Vue JSON tout à droite, et copiez l’identifiant de ressource du compte de stockage.
- Pour le nom du conteneur, copiez le nom du conteneur privé qui contient les artefacts.
- Exemple d’ID de ressource de conteneur de stockage :
/subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/resource-group-example/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
Si le paramètre AzCopy File URI est affiché, entrez l’URI de
azcopy.exedepuis le conteneur.- Sélectionnez le fichier, puis copiez son URL :
Exemple de paramètres de conteneur privé :
- Sélectionnez Examiner et créer. Si la validation réussit, sélectionnez Créer.
- Une fois les ressources déployées, vérifiez si l’application est installée sur une machine virtuelle d’application en vous connectant à la machine virtuelle d’application. Se connecter à la machine virtuelle d’application
Installer WinGet et applications supplémentaires
Structure de dossiers :
- 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')
- Téléchargez les programmes d’installation et chargez-les dans le dossier winget dans le conteneur de stockage
- Bundle WinGet
MSIX(Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle) - Bibliothèque d’interface utilisateur Windows (Microsoft. Interface utilisateur. Xaml.2.8.x64.appx)
- Bundle WinGet
- Créer et charger des 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
- Procédez à la configuration du modèle.