RemoteApp Sanal Makinesi kullanarak uygulama yükleme

Sanal Makine hizmet kataloğu şablonu aracılığıyla bir uygulama yükleyin.

Uygulama yükleme betiği aşağıdaki senaryoları destekler:

  • RemoteApp uygulaması yüklemesinin en yaygın kullanım örneği, Azure Sanal Destop'tan erişilebilen uzak uygulamaları dağıtmaktır.
  • Siber güvenlik ve izleme aracıları gibi önkoşullarınızı yükleyin.
  • Uyumluluk veya uygulama kurulumu için betik yapılandırma değişiklikleri.

Note

Bu örnek dağıtım yalnızca tanıtım amaçlıdır ve ağ, sistem veya uygulama yönetimi için en iyi yöntemlerin tümünü temsil etmez.

Prerequisites

RemoteApp şablonu, uygulamaları yükleme ve Sanal Makineyi yapılandırma işlemini otomatikleştirmek için betik oluşturma işlemini destekler. RemoteApp uygulaması yüklemesini kullanmaya başlamadan önce aşağıdakilere sahip olduğunuzdan emin olmanız gerekir:

  • topluluk, enklav, iş yükü ve en az bir iş yükü kaynak grubu ile iş yükü kaynak grubu içinde kaynak oluşturma izinleri.
  • Özel Bağlantı kaynaklarını enclave’inizin yönetilen kaynak grubuna ekleyebilmeniz için enclave’iniz için Advancedbakım modunu etkinleştirin.
  • kapsayıcı (artefaktlar), depolama hesabı içinde.
  • Depolama hesabına ve isteğe bağlı olarak AzCopy.exe'nin mevcut bir kopyasına yönelik bir genel uç nokta.
  • AzCopy.exe kopyası
    • AzCopy'i indirin.
    • AzCopy yükleyicisini uygulama klasörünüzle aynı düzeyde depolama hesabına yükleyin.
    • Dosya Yapısı:
          - storage account
              - artifacts container
                  - app folder
                  - azcopy.exe 
      
      Aynı kapsayıcıda birden çok uygulama klasörü olan ve aynı AzCopy.exekopyasını kullanan depolama kapsayıcısı kuruluş yapısını gösteren ekran görüntüsü.
  • Güvenli bölge bağlantıları, önceden oluşturulmuş topluluk uç noktaları ile güvenli bölge alt ağı arasında.

Note

Depolama hesabı farklı bir enclave içindeyse, depolama hesabının bulunduğu enclave içinde bir enclave endpoint oluşturun. Ardından, söz konusu depolama hesabı enclave’i ile uygulamayı yüklediğiniz enclave arasında bir enclave bağlantısı oluşturun.

Dağıtılan Azure Kaynakları

  • RemoteApp örneği Sanal Makine
    • Disk
    • Windows Sanal Makinesi
    • Windows Sanal Makine Uzantısı

Dağıtılan Yazılım

  • Windows
  • Seçtiğiniz uygulama

Yükleme

depolama hesabını Visual Studio Code yükleyecek şekilde ayarlama

  1. Depolama hesabı içindeki kapsayıcıya uygulama klasörü ekleyin. Aynı kapanım içindeki yükleme yöntemini gösteren diyagram. Depolama hesabını içeren kapanım dışında yükleme yöntemini gösteren diyagram.
    • Dosya Yapısı:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. İhtiyacınız olan uygulama yükleyicisini indirin. Bu örnekte Vscode.exe indirin ve yükleyiciyi depolama hesabı uygulama klasörüne yükleyin.
  3. Depolama hesabındaki uygulama klasörüne eklediğiniz Visual Studio Code sürümüyle uyumlu main.ps1 uygulama yükleyici betiğini yükleyin:
        # Main powershell script that installs the application
    
        Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

Kurulum Şablonu

  1. İş yükü genel bakış sayfasında, +Add an Azure Service öğesini seçin.

İş yüküne genel bakış sayfasını gösteren ekran görüntüsü.

  1. Service için Virtual Machine öğesini seçin.

Hizmet kataloğu listesinden seçilen Sanal Makine'yi gösteren ekran görüntüsü.

  1. Kaynak grubu seçimini onaylayın ve Next seçin

  2. Temel Bilgiler Sekmesi:

    • için Virtual Machine nameSanal Makinenin adını girin.
    • Admin username ve Admin password için, Sanal Makinenizde oturum açmak için kullandığınız kullanıcı adını ve parolayı girin.
  3. Uygulama Sekmesi:

    • App folder URI için, kapsayıcının URI’sini girin. Kapsayıcı içinde bir yapıt seçin, URI'sini kopyalayın, URI'deki klasör adından sonraki her şeyi kaldırın . Bu dağıtımda kullanılacak uygulama klasörü URI'sini gösteren ekran görüntüsü.

      Özgün URI Sabit URI
      <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
    • Main Script alanına, uygulamayı kuran betiğin adını (örn: main.ps1) girin.

    Sanal Makine dağıtımı sırasında Uygulama sekmesini gösteren ekran gösterisi.

Özel Kapsayıcı:

  1. App folder in private container için, Sanal Makine aracılığıyla depolama hesabına reader rolü erişimine izin vermek üzere true seçin.

  2. Storage container resource id için aşağıdaki üç bölümü alın: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • Storage container resource id almak için depolama hesabında "Genel Bakış"ı seçin, en sağ köşede "JSON Görünümü"nü seçin ve depolama hesabının kaynak kimliğini kopyalayın.

    Bu dağıtımda kullanılacak hesap kaynak kimliğinin ekran görüntüsü.

    • Kapsayıcı adı için, yapıtları barındıran özel kapsayıcının adını kopyalayın.
    • Örnek depolama kapsayıcısı kaynak kimliği: subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. AzCopy File URI parametresi görüntülenirse, kapsayıcıdaki URI'yi azcopy.exe'ye ekleyin

    • Dosyayı seçin ve URL'sini kopyalayın:

    azcopy.exe dosyasıyla depolama kapsayıcısı kuruluş yapısını gösteren ekran görüntüsü.

    azcopy.exe dosyasının URI'sini gösteren ekran görüntüsü.

Örnek Özel Kapsayıcı Parametreleri:

Uygulama sekmesi parametrelerinin tamamlandığını gösteren ekran görüntüsü.

  1. Review and Create öğesini seçin, doğrulamalar başarılı olursa Create öğesini seçin.
  2. Kaynaklar dağıtıldıktan sonra Uygulama Sanal Makinesi'ne bağlanarak uygulamanın uygulama Sanal Makinesi'ne yüklenip yüklenmediğini denetleyin. Uygulama Sanal Makinesine bağlanma

WinGet Yüklemesi

Klasör Yapısı:

- 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')

Winget kullanarak diğer uygulamaları yüklemek ve yönetmek için RemoteApp'e winget kurmakta gereken bileşenleri gösteren ekran görüntüsü.

  1. Yükleyicileri indirin ve depolama kapsayıcısında winget klasörüne yükleyin
  2. Betik oluşturun ve yükleyin
    1. 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
      
    2. 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
      
    3. restart.ps1
      Restart-Computer -Force
      
  3. Şablonu Dağıtmaya Devam Et