Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Installare un'applicazione tramite il modello di catalogo del servizio macchina virtuale.
Lo scripting dell'installazione dell'applicazione supporta gli scenari seguenti:
- Il caso d'uso più comune per l'installazione dell'app RemoteApp consiste nel distribuire applicazioni remote a cui è possibile accedere da un Azure Destop virtuale.
- Installare i prerequisiti, ad esempio gli agenti di sicurezza informatica e monitoraggio.
- Modifiche alla configurazione dello script per la conformità o l'installazione dell'applicazione.
Note
Questa distribuzione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per l'amministrazione di rete, sistemi o applicazioni.
Prerequisiti
Il modello RemoteApp supporta lo scripting per automatizzare il processo di installazione delle applicazioni e la configurazione della macchina virtuale. Prima di iniziare a usare l'installazione dell'app RemoteApp, è necessario assicurarsi di disporre di:
- Una community, un'enclave, un workload, almeno un gruppo di risorse del workload e le autorizzazioni per creare risorse all'interno del gruppo di risorse del workload.
- Abilitare la
Advancedmodalità di manutenzione per l'enclave in modo da poter aggiungere le risorse collegamento privato al gruppo di risorse gestite dall'enclave. - Un contenitore (artefatti) all'interno dell'account di archiviazione.
- Un endpoint della community per l'account di archiviazione e, facoltativamente, a una copia esistente di AzCopy.exe.
- Copia di AzCopy.exe
- Scaricare AzCopy.
- Carica l'installer di AzCopy nell'account di archiviazione allo stesso livello della cartella dell'applicazione.
- Struttura dei file:
- storage account - artifacts container - app folder - azcopy.exe
- Connessioni dell'enclave tra gli endpoint della community creati in precedenza e la subnet dell'enclave.
Note
Se l'account di archiviazione si trova in un'enclave diversa, creare un endpoint enclave nell'enclave che contiene l'account di archiviazione. Creare quindi una connessione enclave tra l'enclave dell'account di archiviazione e l'enclave in cui si installa l'applicazione.
risorse Azure distribuite
- Macchina virtuale di esempio di RemoteApp
- Disco
- Macchina virtuale Windows
- estensione della macchina virtuale Windows
Software distribuito
- Windows
- Applicazione a scelta
Installazione
Configurare l'account di archiviazione per installare Visual Studio Code
- Aggiungere la cartella dell'app al contenitore all'interno dell'account di archiviazione.
- Struttura dei file:
- artifacts container - app folder - app installer - main script to install app - (optional) additional scripts - (optional) azcopy.exe
- Struttura dei file:
- Scaricare il programma di installazione dell'applicazione necessario. In questo esempio scaricare Vscode.exe e caricare il programma di installazione nella cartella dell'app dell'account di archiviazione.
- Caricare lo script di installazione dell'applicazione
main.ps1compatibile con la versione di Visual Studio Code aggiunta alla cartella app dell'account di archiviazione:# Main powershell script that installs the application Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
Modello di installazione
- Nella pagina di panoramica del carico di lavoro selezionare
+Add an Azure Service.
- Per
ServiceselezionareVirtual Machine.
Confermare la selezione del gruppo di risorse e selezionare
NextScheda Informazioni di base:
- Per
Virtual Machine name, immettere il nome della macchina virtuale. - Per
Admin usernameeAdmin passwordimmettere il nome utente e la password usati per accedere alla macchina virtuale.
- Per
Scheda dell'app:
Per
App folder URI, immettere l'URI nel contenitore. Selezionare un artefatto all'interno del contenitore, copiarne l'URI, rimuovere tutti gli elementi dopo il nome della cartella nell'URI.
URI originale URI fisso <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
Per
Main Scriptimmettere il nome (ad esempio:main.ps1) dello script che installa l'applicazione.
Contenitore privato:
Per
App folder in private container, selezionaretrueper consentire al ruoloreaderdi accedere all'account di archiviazione tramite la macchina virtuale.Per
Storage container resource idottenere le tre parti seguenti:<storage-account-resource-id>+ '/blobServices/default/containers/' +<container-name>.- Per ottenere
Storage container resource id, dall'account di archiviazione selezionare "Panoramica", selezionare "Visualizzazione JSON" nell'angolo all'estrema destra, copiare l'ID risorsa dell'account di archiviazione.
- Per il nome del contenitore, copiare il nome del contenitore privato che contiene gli artefatti.
- ID risorsa del contenitore di archiviazione di esempio:
subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
- Per ottenere
Se il parametro
AzCopy File URIviene visualizzato, aggiungere l'URI al azcopy.exe dal contenitore- Selezionare il file e copiarne l'URL:
Parametri del contenitore privato di esempio:
- Selezionare
Review and Create; se la convalida ha esito positivo, selezionareCreate. - Dopo la distribuzione delle risorse, verificare se l'app è installata nella macchina virtuale dell'applicazione connettendosi alla macchina virtuale dell'applicazione. Connettersi alla macchina virtuale dell'applicazione
Installazione di WinGet
Struttura cartelle:
- 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')
- Scaricare i programmi di installazione e caricarli nella cartella winget nel contenitore di archiviazione
- Bundle WinGet
MSIX(Microsoft. DesktopAppInstaller_8wekyb3d8bbwe.msixbundle) - Libreria dell'interfaccia utente di Windows (Microsoft. UI. Xaml.2.8.x64.appx)
- Bundle WinGet
- Creare e caricare script
- 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
- Procedere alla distribuzione del modello