تثبيت التطبيقات باستخدام RemoteApp Virtual Machine

تثبيت تطبيق عبر قالب كتالوج خدمات الآلة الافتراضية.

يدعم برمجة تثبيت التطبيق السيناريوهات التالية:

  • أكثر حالات الاستخدام شيوعا لتثبيت تطبيق RemoteApp هو نشر تطبيقات عن بعد يمكن الوصول إليها من خلال Azure Virtual Destop.
  • قم بتثبيت متطلباتك الأساسية مثل الأمن السيبراني ووكلاء المراقبة.
  • تغييرات في تكوين السكريبت للامتثال أو إعداد التطبيقات.

ملحوظة

هذا النشر النموذجي مخصص فقط لأغراض العرض ولا يمثل جميع أفضل الممارسات لإدارة الشبكات أو الأنظمة أو التطبيقات.

المتطلبات المسبقه

يدعم قالب RemoteApp البرمجة النصية لأتمتة عملية تثبيت التطبيقات وتكوين الآلة الافتراضية. قبل أن تبدأ باستخدام تثبيت تطبيق RemoteApp، عليك التأكد من أنك تملك:

ملحوظة

إذا كان حساب التخزين في منطقة مختلفة، أنشئ نقطة نهاية في ال enclave مع حساب التخزين. ثم أنشئ اتصال enclave بين ذلك الحساب المخزن والموقع الذي تقوم فيه بتثبيت التطبيق.

Azure Resources المنتشرة

  • مثال على RemoteApp على آلة افتراضية
    • قرص
    • جهاز Windows الظاهري
    • إضافة Windows Virtual Machine

البرمجيات المنشورة

  • Windows
  • تطبيق من اختيارك

التثبيت

قم بإعداد حساب التخزين لتثبيت تعليمة Visual Studio برمجية

  1. أضف مجلد التطبيقات إلى الحاوية داخل حساب التخزين. مخطط يوضح طريقة التركيب داخل نفس المنطقة. مخطط يوضح طريقة التثبيت خارج الدائرة التي تحتوي على حساب التخزين.
    • هيكل الملف:
          - artifacts container
              - app folder
                  - app installer
                  - main script to install app
                  - (optional) additional scripts
                  - (optional) azcopy.exe
      
  2. قم بتحميل مثبت التطبيق الذي تحتاجه. في هذا المثال، قم بتحميل Vscode.exe ورفع المثبت إلى مجلد تطبيق حساب التخزين.
  3. قم بتحميل main.ps1 سكريبت تثبيت التطبيق المتوافق مع النسخة التي أضفتها من تعليمة Visual Studio برمجية إلى مجلد تطبيق حساب التخزين:
        # Main powershell script that installs the application
    
        Start-Process 'C:/vscode/VSCodeSetup-x64-{version}.exe' -Argument "/VERYSILENT /MERGETASKS=!runcode"
    

قالب الإعداد

  1. في صفحة نظرة عامة على عبء العمل، اختر +Add an Azure Service.

لقطة شاشة تظهر صفحة نظرة عامة على عبء العمل.

  1. ل Service، اختر Virtual Machine.

لقطة شاشة تظهر الآلة الافتراضية المختارة من قائمة كتالوج الخدمة.

  1. أكد اختيار مجموعة الموارد واختر Next

  2. تبويب الأساسيات:

    • ل Virtual Machine name، أدخل اسم الآلة الافتراضية.
    • ل Admin username و Admin password، أدخل اسم المستخدم وكلمة المرور التي تستخدمها لتسجيل الدخول إلى جهازك الافتراضي.
  3. تبويب التطبيق:

    • ل App folder URI، أدخل URI إلى الحاوية. اختر عنصرا داخل الحاوية، انسخ URI، وأحذف كل شيء بعد اسم المجلد في URI. لقطة شاشة تظهر مجلد التطبيق URI للاستخدام في هذا النشر.

      URI الأصلي URI ثابت
      https://<storage-account>.blob.core.windows.net//<container-name><folder-name>/<script>.ps1 https://<storage-account>.blob.core.windows.net/<container-name>/<folder-name>
    • مثال:

      • storageaccountexample.blob.core.windows.net/artifacts/vscode
    • للإدخال Main Script استخدم اسم (مثلا: main.ps1) السكريبت الذي يثبت التطبيق.

    عرض شاشة يظهر تبويب التطبيق أثناء نشر الآلة الافتراضية.

الحاوية الخاصة:

  1. للسماح App folder in private container بالوصول إلى حساب التخزين عبر الآلة truereader الافتراضية.

  2. للحصول Storage container resource id على الأجزاء الثلاثة التالية: <storage-account-resource-id> + '/blobServices/default/containers/' + <container-name>.

    • للحصول Storage container resource idعلى ، من حساب التخزين، اختر "نظرة عامة"، ثم اختر "عرض JSON" في الزاوية اليمنى البعيدة، وانسخ معرف مورد حساب التخزين.

    لقطة شاشة لمعرف مورد الحساب للاستخدام في هذا النشر.

    • بالنسبة لاسم الحاوية، انسخ اسم الحاوية الخاصة التي تحتوي على القطع الأثرية.
    • مثال على معرف موارد حاوية التخزين: subscriptions/000000a0-a0a0-000a-00a0-0000aaa0a000/resourceGroups/providers/Microsoft.Storage/storageAccounts/storage-account-example/blobServices/default/containers/container-name
  3. إذا تم عرض المعامل AzCopy File URI ، أضف URI إلى azcopy.exe الحاوية

    • اختر الملف، وانسخ رابط الرابط:

    لقطة شاشة تظهر هيكل تنظيم حاوية التخزين مع azcopy.exe الملف.

    لقطة شاشة تظهر URI لملف azcopy.exe.

أمثلة على معلمات الحاوية الخاصة:

لقطة شاشة تظهر معلمات تبويب التطبيق مكتملة.

  1. اختر Review and Create، إذا نجحت عمليات التحقق، اختر Create.
  2. بمجرد نشر الموارد، تحقق مما إذا كان التطبيق مثبتا على التطبيق الافتراضي من خلال الاتصال بالآلة الافتراضية التطبيقية. الاتصال بالآلة الافتراضية للتطبيق

تركيب WinGet

هيكل المجلد:

- 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 على تطبيق RemoteApp ثم تثبيت وإدارة تطبيقات أخرى باستخدام winget.

  1. قم بتحميل المثبتات ورفعها إلى مجلد winget في حاوية التخزين
  2. إنشاء ورفع السكريبتات
    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. تابع إلى قالب النشر