Aracılığıyla paylaş


Uygulamayı bağlamak için MSIX paketlerini test edin

Bu makalede, uygulama ekleme için paketlerinizin testine yardımcı olmak için MSIX paketlerini Azure Sanal Masaüstü'ne bağlama işlemi gösterilmektedir. Power App'in ekli olduğu API'ler Windows 11 Enterprise ve Windows 10 Enterprise için kullanılabilir. Bu API'ler test için Azure Sanal Masaüstü dışında kullanılabilir, ancak Azure Sanal Masaüstü dışında uygulama ekleme veya MSIX uygulaması ekleme için yönetim düzlemi yoktur.

Uygulama ekleme ve MSIX uygulama ekleme hakkında daha fazla bilgi için bkz . Azure Sanal Masaüstü'nde uygulama ekleme ve MSIX uygulama ekleme.

Önkoşullar

Bir paketi bu makaledeki yönergeleri izleyerek test etmeden önce aşağıdakilere ihtiyacınız vardır:

  • Windows 11 Enterprise veya Windows 10 Enterprise çalıştıran bir cihaz.

  • MSIX biçiminden uygulama ekleme ile kullanabileceğiniz bir görüntüye genişlettiniz. Azure Sanal Masaüstü'nde uygulama ekleme ile kullanmak için MSIX görüntüsü oluşturmayı öğrenin.

  • CimFS görüntüsü kullanıyorsanız CimDiskImage PowerShell modülünü yüklemeniz gerekir.

  • MSIX paketini test etmek için kullandığınız cihazda yerel yönetici iznine sahip bir kullanıcı hesabı.

Bu makalede Azure Sanal Masaüstü dışında test işlemi açıklandığı için Azure Sanal Masaüstü dağıtımına ihtiyacınız yoktur.

Not

Microsoft Desteği CimDiskImage PowerShell modülünü desteklemez, bu nedenle herhangi bir sorunla karşılaşırsanız modülün GitHub deposunda bir istek göndermeniz gerekir.

Aşamalar

MSIX paketlerini Azure Sanal Masaüstü dışında kullanmak için aşağıdaki sırayla gerçekleştirmeniz gereken dört ayrı aşama vardır:

  1. Aşama
  2. Kaydol
  3. Kaydı Kaldır
  4. Destage

Hazırlama ve kullanımdan kaldırma, makine düzeyindeki işlemler, kayıt ve kayıt kaldırma ise kullanıcı düzeyinde işlemlerdir. Kullanmanız gereken komutlar, hangi PowerShell sürümünü kullandığınıza ve disk görüntülerinizin CimFS, VHDX veya VHD biçiminde olup olmadığına bağlı olarak değişir.

Not

Tüm MSIX paketleri bir sertifika içerir. MSIX paketleri için sertifikaların ortamınızda güvenilir olduğundan emin olmak sizin sorumluluğunuzdadır.

MSIX paketi hazırlamaya hazırlanma

Hazırlama betiği, makinenizi MSIX paketini almaya hazırlar ve ilgili paketi makinenize bağlar.

Kullandığınız PowerShell sürümü için ilgili sekmeyi seçin.

PowerShell 6 veya üzerini kullanarak paketleri hazırlamak için hazırlama işlemlerinden önce aşağıdaki komutları çalıştırarak Windows Çalışma Zamanı paketinin özelliklerini PowerShell'e getirmeniz gerekir.

  1. Yönetici olarak bir PowerShell istemi açın.

  2. Windows Çalışma Zamanı Paketini indirip yüklemek için aşağıdaki komutu çalıştırın. Aşağıdaki komutları makine başına yalnızca bir kez çalıştırmanız gerekir.

    #Required for PowerShell 6 and later
    $nuGetPackageName = 'Microsoft.Windows.SDK.NET.Ref'
    Register-PackageSource -Name MyNuGet -Location https://www.nuget.org/api/v2 -ProviderName NuGet
    Find-Package $nuGetPackageName | Install-Package
    
  3. Ardından, Windows Çalışma Zamanı bileşenlerini PowerShell'de kullanılabilir hale getirmek için aşağıdaki komutu çalıştırın:

    #Required for PowerShell 6 and later
    $nuGetPackageName = 'Microsoft.Windows.SDK.NET.Ref'
    $winRT = Get-Package $nuGetPackageName
    $dllWinRT = Get-ChildItem (Split-Path -Parent $winRT.Source) -Recurse -File WinRT.Runtime.dll
    $dllSdkNet = Get-ChildItem (Split-Path -Parent $winRT.Source) -Recurse -File Microsoft.Windows.SDK.NET.dll
    Add-Type -AssemblyName $dllWinRT.FullName
    Add-Type -AssemblyName $dllSdkNet.FullName
    

MSIX paketi hazırlama

Makinenizi MSIX paketlerini hazırlamaya hazırladığınıza göre, disk görüntünüzü bağlamanız ve ardından MSIX paketinizi hazırlamayı tamamlamanız gerekir.

Disk görüntüsü bağlama

Disk görüntüsünü bağlama işlemi, disk görüntünüz için CimFs, VHDX veya VHD biçimini kullanıp kullanmadığınıza bağlı olarak değişir. Kullandığınız biçim için ilgili sekmeyi seçin.

CimFS disk görüntüsünü bağlamak için:

  1. Aynı PowerShell oturumunda aşağıdaki komutu çalıştırın:

    $diskImage = "<Local or UNC path to the disk image>"
    
    $mount = Mount-CimDiskImage -ImagePath $diskImage -PassThru -NoMountPath
    
    #We can now get the Device Id for the mounted volume, this will be useful for the destage step.
    $deviceId = $mount.DeviceId
    Write-Output $deviceId
    
  2. değişkenini $deviceIdtutun. Bu makalenin devamında bu bilgilere ihtiyacınız vardır.

  3. İşiniz bittiğinde, Disk görüntüsünü hazırlamayı bitirme bölümüne geçin.

Disk görüntüsünü hazırlamayı bitirme

Son olarak, disk görüntüsünü hazırlama işlemini tamamlamak için tüm görüntü biçimleri için aşağıdaki komutları çalıştırmanız gerekir. Bu komut, $deviceId önceki bölümde disk görüntünüzü bağladığınızda oluşturduğunuz değişkeni kullanır.

  1. Aynı PowerShell oturumunda aşağıdaki komutları çalıştırarak uygulama bilgilerini alın:

    $manifest = Get-ChildItem -LiteralPath $deviceId -Recurse -File AppxManifest.xml
    $manifestFolder = $manifest.DirectoryName
    
  2. Aşağıdaki komutları çalıştırarak MSIX paketinin tam adını alın ve bir değişkende depolayın. Bu değişken sonraki adımlar için gereklidir.

    $msixPackageFullName = $manifestFolder.Split('\')[-1]
    Write-Output $msixPackageFullName
    
  3. Aşağıdaki komutları çalıştırarak Paket Yöneticisi API'sinin bildirim klasörü için mutlak bir URI oluşturun:

    $folderUri = $maniFestFolder.Replace('\\?\','file:\\\')
    $folderAbsoluteUri = ([Uri]$folderUri).AbsoluteUri
    
  4. Aşağıdaki komutları çalıştırarak uygulama paketini hazırlamak için mutlak URI'yi kullanın:

    $asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.ToString() -eq 'System.Threading.Tasks.Task`1[TResult] AsTask[TResult,TProgress](Windows.Foundation.IAsyncOperationWithProgress`2[TResult,TProgress])' })[0]
    $asTaskAsyncOperation = $asTask.MakeGenericMethod([Windows.Management.Deployment.DeploymentResult], [Windows.Management.Deployment.DeploymentProgress])
    
    $packageManager = New-Object -TypeName Windows.Management.Deployment.PackageManager
    
    $asyncOperation = $packageManager.StagePackageAsync($folderAbsoluteUri, $null, "StageInPlace")
    
  5. Aşağıdaki komutları çalıştırarak uygulama paketi için hazırlama ilerleme durumunu izleyin. Paketi hazırlama süresi, boyutuna bağlıdır. Status değişkeninin $stagingResult özelliği, hazırlama tamamlandığında olurRanToCompletion.

    $stagingResult = $asTaskAsyncOperation.Invoke($null, @($asyncOperation))
    
    while ($stagingResult.Status -eq "WaitingForActivation") {
        Write-Output "Waiting for activation..."
        Start-Sleep -Seconds 5
    }
    
    Write-Output $stagingResult
    

MSI paketiniz hazırlandıktan sonra MSIX paketinizi kaydedebilirsiniz.

MSIX paketini kaydetme

MSIX paketini kaydetmek için aynı PowerShell oturumunda aşağıdaki komutları çalıştırın. Bu komut, $msixPackageFullName önceki bölümde oluşturulan değişkeni kullanır.

$manifestPath = Join-Path (Join-Path $Env:ProgramFiles 'WindowsApps') (Join-Path $msixPackageFullName AppxManifest.xml)
Add-AppxPackage -Path $manifestPath -DisableDevelopmentMode -Register

MSIX paketiniz artık kayıtlı olduğuna göre, uygulamanız oturumunuzda kullanılabilir olmalıdır. Artık uygulamayı test ve sorun giderme amacıyla açabilirsiniz. İşiniz bittiğinde, MSIX paketinizin kaydını kaldırmanız ve kaldırmanız gerekir.

MSIX paketinin kaydını kaldırma

MSIX paketinizi tamamladıktan ve kaldırmaya hazır olduğunuzda, önce kaydını silmeniz gerekir. MSIX paketinin kaydını kaldırmak için aynı PowerShell oturumunda aşağıdaki komutları çalıştırın. Bu komutlar diskin DeviceId parametresini yeniden alır ve önceki bölümde oluşturulan değişkeni kullanarak $msixPackageFullName paketi kaldırır.

$appPath = Join-Path (Join-Path $Env:ProgramFiles 'WindowsApps') $msixPackageFullName
$folderInfo = Get-Item $appPath
$deviceId = '\\?\' + $folderInfo.Target.Split('\')[0] +'\'
Write-Output $deviceId #Save this for later

Remove-AppxPackage $msixPackageFullName -PreserveRoamableApplicationData

MSIX paketinin yetkilerini kaldırma

Son olarak, MSIX paketinin yetkisini almak için disk görüntünüzü çıkarmanız gerekir. Paketin hala herhangi bir kullanıcı için kaydedilmediğinden emin olmak için aynı PowerShell oturumunda aşağıdaki komutu çalıştırın. Bu komut, $msixPackageFullName önceki bölümde oluşturulan değişkeni kullanır.

Remove-AppxPackage -AllUsers -Package $msixPackageFullName -ErrorAction SilentlyContinue

Diskler görüntüsünü çıkarma

Kullanımdan kaldırma işlemini tamamlamak için diskleri sistemden çıkarmanız gerekir. Kullanmanız gereken komut, disk görüntünüzün biçimine bağlıdır. Kullandığınız biçim için ilgili sekmeyi seçin.

CimFS disk görüntüsünü sökmek için aynı PowerShell oturumunda aşağıdaki komutları çalıştırın:

Dismount-CimDiskImage -DeviceId $deviceId

Disklerinizi çıkarma işlemini tamamladıktan sonra MSIX paketinizi güvenle kaldırmış olacaksınız.

MSIX uygulama ekleme aracısı için simülasyon betiklerini ayarlama

MsIX paketlerini cihazınıza otomatik olarak eklemek ve kaldırmak istiyorsanız, başlatma, oturum açma, kapatma ve kapatma sırasında çalışan betikler oluşturmak için bu makaledeki PowerShell komutlarını kullanabilirsiniz. Daha fazla bilgi edinmek için bkz . Grup İlkesi'nde başlatma, kapatma, oturum açma ve kapatma betiklerini kullanma. Her aşama için gereken değişkenlerin her betikte kullanılabilir olduğundan emin olmanız gerekir.

Her aşama için bir betik oluşturursunuz:

  • Başlangıç betiği aşama işlemini çalıştırır.
  • Oturum açma betiği kayıt işlemini çalıştırır.
  • Oturumu kapatma betiği, kayıt silme işlemini çalıştırır.
  • Kapatma betiği, destage işlemini çalıştırır.

Not

Aşama betiğini çalıştırmak için görev zamanlayıcısını kullanabilirsiniz. Betiği çalıştırmak için görev tetikleyicisini Bilgisayar başlatıldığında olarak ayarlayın ve En yüksek ayrıcalıklarla çalıştır'ı etkinleştirin.

Paketleri çevrimdışı kullanma

Paketleri İnternet'e bağlı olmayan cihazlarda kullanıyorsanız uygulamayı başarıyla çalıştırmak için paket lisanslarının cihazınızda yüklü olduğundan emin olmanız gerekir. Cihazınız çevrimiçiyse gerekli lisansların otomatik olarak indirilmesi gerekir.

Lisans dosyalarını yüklemek için WMI Köprüsü Sağlayıcısı'nda sınıfını çağıran MDM_EnterpriseModernAppManagement_StoreLicenses02_01 bir PowerShell betiği kullanmanız gerekir.

Çevrimdışı kullanım için bir lisansı şu şekilde ayarlayabilirsiniz:

  1. uygulama paketini, lisansı ve gerekli çerçeveleri İş İçin Microsoft Store indirin. Hem kodlanmış hem de kodlanmamış lisans dosyalarına ihtiyacınız vardır. Çevrimdışı lisanslı bir uygulamayı indirmeyi öğrenmek için bkz . Çevrimdışı uygulamaları dağıtma.

  2. Yönetici olarak aşağıdaki PowerShell komutlarını çalıştırın. Lisans, hazırlama aşamasının sonundadır'ı yükleyebilirsiniz. Aşağıdaki değişkenleri düzenlemeniz gerekir:

    • $contentID , kodlanmamış lisans dosyasındaki (.xml) ContentID değeridir. Lisans dosyasını istediğiniz bir metin düzenleyicisinde açabilirsiniz.

    • $licenseBlob Kodlanmış lisans dosyasındaki (.bin ) lisans blobunun tüm dizesidir. Kodlanmış lisans dosyasını istediğiniz bir metin düzenleyicisinde açabilirsiniz.

      $namespaceName = "root\cimv2\mdm\dmmap"
      $className = "MDM_EnterpriseModernAppManagement_StoreLicenses02_01"
      $methodName = "AddLicenseMethod"
      $parentID = "./Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses"
      
      #Update $contentID with the ContentID value from the unencoded license file (.xml)
      $contentID = "{'ContentID'_in_unencoded_license_file}"
      
      #Update $licenseBlob with the entire String in the encoded license file (.bin)
      $licenseBlob = "{Entire_String_in_encoded_license_file}"
      
      $session = New-CimSession
      
      #The final string passed into the AddLicenseMethod should be of the form <License Content="encoded license blob" />
      $licenseString = '<License Content='+ '"' + $licenseBlob +'"' + ' />'
      
      $params = New-Object Microsoft.Management.Infrastructure.CimMethodParametersCollection
      $param = [Microsoft.Management.Infrastructure.CimMethodParameter]::Create("param",$licenseString ,"String", "In")
      $params.Add($param)
      
      try
      {
           $instance = New-CimInstance -Namespace $namespaceName -ClassName $className -Property @{ParentID=$parentID;InstanceID=$contentID}
           $session.InvokeMethod($namespaceName, $instance, $methodName, $params)
      }
      catch [Exception]
      {
           Write-Host $_ | Out-String
      }
      

Tanıtım betikleri

MSIX paketlerini test etme sürecinin dört aşamasına yönelik tanıtım betiklerini ve bunların nasıl kullanılacağına yönelik söz dizimi yardımını GitHub depomuzda bulabilirsiniz. Bu betikler herhangi bir PowerShell sürümü ve herhangi bir disk görüntüsü biçimiyle çalışır.

Sonraki adımlar

Azure Sanal Masaüstü'nde uygulama ekleme ve MSIX uygulama ekleme hakkında daha fazla bilgi edinin: