Menguji paket MSIX untuk lampiran aplikasi
Artikel ini memperlihatkan kepada Anda cara memasang paket MSIX di luar Azure Virtual Desktop untuk membantu menguji paket Anda untuk lampiran aplikasi. API yang memasang aplikasi daya tersedia untuk Windows 11 Enterprise dan Windows 10 Enterprise. API ini dapat digunakan di luar Azure Virtual Desktop untuk pengujian, namun tidak ada sarana manajemen untuk lampiran aplikasi MSIX atau lampiran aplikasi di luar Azure Virtual Desktop.
Untuk informasi selengkapnya tentang lampiran aplikasi MSIX dan lampiran aplikasi, lihat MSIX app attach dan app attach di Azure Virtual Desktop.
Prasyarat
Sebelum Anda dapat menguji paket untuk mengikuti petunjuk dalam artikel ini, Anda memerlukan hal-hal berikut:
Perangkat yang menjalankan Windows 11 Enterprise atau Windows 10 Enterprise.
Aplikasi yang Anda perluas dari format MSIX ke dalam gambar yang dapat Anda gunakan dengan lampiran aplikasi. Pelajari cara Membuat gambar MSIX untuk digunakan dengan lampiran aplikasi di Azure Virtual Desktop.
Jika Anda menggunakan citra CimFS, Anda perlu menginstal modul CimDiskImage PowerShell.
Akun pengguna yang memiliki izin administrator lokal pada perangkat yang Anda gunakan untuk menguji paket MSIX.
Anda tidak memerlukan penyebaran Azure Virtual Desktop karena artikel ini menjelaskan proses pengujian di luar Azure Virtual Desktop.
Catatan
Dukungan Microsoft tidak mendukung modul CimDiskImage PowerShell, jadi jika Anda mengalami masalah, Anda harus mengirimkan permintaan pada repositori GitHub modul.
Fase
Untuk menggunakan paket MSIX di luar Azure Virtual Desktop, ada empat fase berbeda yang harus Anda lakukan dalam urutan berikut:
- Tahap
- Daftar
- Batalkan pendaftaran
- Destage
Penahapan dan pentahapan adalah operasi tingkat mesin, sementara mendaftar dan membatalkan pendaftaran adalah operasi tingkat pengguna. Perintah yang perlu Anda gunakan bervariasi berdasarkan versi PowerShell mana yang Anda gunakan dan apakah gambar disk Anda dalam format CimFS, VHDX , atau VHD .
Catatan
Semua paket MSIX menyertakan sertifikat. Anda bertanggung jawab untuk memastikan sertifikat untuk paket MSIX dipercaya di lingkungan Anda.
Bersiap untuk menahapkan paket MSIX
Skrip penahapan menyiapkan komputer Anda untuk menerima paket MSIX dan memasang paket yang relevan ke komputer Anda.
Pilih tab yang relevan untuk versi PowerShell yang Anda gunakan.
Untuk menahapkan paket menggunakan PowerShell 6 atau yang lebih baru, Anda perlu menjalankan perintah berikut sebelum operasi penahapan untuk membawa kemampuan paket Windows Runtime ke PowerShell.
Buka perintah PowerShell sebagai administrator.
Jalankan perintah berikut untuk mengunduh dan menginstal Paket Runtime Windows. Anda hanya perlu menjalankan perintah berikut sekali per komputer.
#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
Selanjutnya, jalankan perintah berikut untuk membuat komponen Windows Runtime tersedia di PowerShell:
#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
Menahapkan paket MSIX
Sekarang setelah Anda menyiapkan komputer Anda untuk mentahapkan paket MSIX, Anda perlu memasang gambar disk Anda, lalu menyelesaikan penahapan paket MSIX Anda.
Memasang citra disk
Proses untuk memasang citra disk bervariasi tergantung pada apakah Anda menggunakan format CimFs, VHDX, atau VHD untuk gambar disk Anda. Pilih tab yang relevan untuk format yang Anda gunakan.
Untuk memasang citra disk CimFS:
Dalam sesi PowerShell yang sama, jalankan perintah berikut:
$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
Pertahankan variabel
$deviceId
. Anda memerlukan informasi ini nanti di artikel ini.Setelah selesai, lanjutkan ke Selesai pentahapan gambar disk.
Menyelesaikan penahapan gambar disk
Terakhir, Anda perlu menjalankan perintah berikut untuk semua format gambar untuk menyelesaikan penahapan gambar disk. Perintah ini menggunakan variabel yang $deviceId
Anda buat saat memasang gambar disk di bagian sebelumnya.
Dalam sesi PowerShell yang sama, ambil informasi aplikasi dengan menjalankan perintah berikut:
$manifest = Get-ChildItem -LiteralPath $deviceId -Recurse -File AppxManifest.xml $manifestFolder = $manifest.DirectoryName
Dapatkan nama lengkap paket MSIX dan simpan dalam variabel dengan menjalankan perintah berikut. Variabel ini diperlukan untuk langkah-langkah selanjutnya.
$msixPackageFullName = $manifestFolder.Split('\')[-1] Write-Output $msixPackageFullName
Buat URI absolut untuk folder manifes untuk PACKAGE Manager API dengan menjalankan perintah berikut:
$folderUri = $maniFestFolder.Replace('\\?\','file:\\\') $folderAbsoluteUri = ([Uri]$folderUri).AbsoluteUri
Gunakan URI absolut untuk menahapkan paket aplikasi dengan menjalankan perintah berikut:
$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")
Pantau kemajuan penahapan untuk paket aplikasi dengan menjalankan perintah berikut. Waktu yang diperlukan untuk menahapkan paket tergantung pada ukurannya. Properti
Status
$stagingResult
variabel akan menjadiRanToCompletion
ketika penahapan selesai.$stagingResult = $asTaskAsyncOperation.Invoke($null, @($asyncOperation)) while ($stagingResult.Status -eq "WaitingForActivation") { Write-Output "Waiting for activation..." Start-Sleep -Seconds 5 } Write-Output $stagingResult
Setelah paket MSI Anda ditahapkan, Anda dapat mendaftarkan paket MSIX Anda.
Mendaftarkan paket MSIX
Untuk mendaftarkan paket MSIX, jalankan perintah berikut dalam sesi PowerShell yang sama. Perintah ini menggunakan variabel yang $msixPackageFullName
dibuat di bagian sebelumnya.
$manifestPath = Join-Path (Join-Path $Env:ProgramFiles 'WindowsApps') (Join-Path $msixPackageFullName AppxManifest.xml)
Add-AppxPackage -Path $manifestPath -DisableDevelopmentMode -Register
Sekarang setelah paket MSIX Anda terdaftar, aplikasi Anda harus tersedia untuk digunakan dalam sesi Anda. Anda sekarang dapat membuka aplikasi untuk pengujian dan pemecahan masalah. Setelah selesai, Anda perlu membatalkan pendaftaran dan menyimpang paket MSIX Anda.
Membatalkan pendaftaran paket MSIX
Setelah selesai dengan paket MSIX Anda dan siap untuk menghapusnya, pertama-tama Anda perlu membatalkan pendaftarannya. Untuk membatalkan pendaftaran paket MSIX, jalankan perintah berikut dalam sesi PowerShell yang sama. Perintah ini mendapatkan parameter disk DeviceId
lagi, dan menghapus paket menggunakan variabel yang $msixPackageFullName
dibuat di bagian sebelumnya.
$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
Destage paket MSIX
Terakhir, untuk menonaktifkan paket MSIX, Anda perlu melepas gambar disk Anda, jalankan perintah berikut dalam sesi PowerShell yang sama untuk memastikan bahwa paket belum terdaftar untuk pengguna mana pun. Perintah ini menggunakan variabel yang $msixPackageFullName
dibuat di bagian sebelumnya.
Remove-AppxPackage -AllUsers -Package $msixPackageFullName -ErrorAction SilentlyContinue
Melepas citra disk
Untuk menyelesaikan proses destaging, Anda perlu melepas disk dari sistem. Perintah yang perlu Anda gunakan tergantung pada format gambar disk Anda. Pilih tab yang relevan untuk format yang Anda gunakan.
Untuk melepas citra disk CimFS, jalankan perintah berikut dalam sesi PowerShell yang sama:
Dismount-CimDiskImage -DeviceId $deviceId
Setelah selesai melepas disk, Anda telah menghapus paket MSIX dengan aman.
Menyiapkan skrip simulasi untuk agen yang melampirkan aplikasi MSIX
Jika Anda ingin menambahkan dan menghapus paket MSIX ke perangkat Anda secara otomatis, Anda dapat menggunakan perintah PowerShell dalam artikel ini untuk membuat skrip yang berjalan saat startup, masuk, keluar, dan matikan. Untuk mempelajari selengkapnya, lihat Menggunakan skrip startup, shutdown, log masuk, dan logoff di Kebijakan Grup. Anda perlu memastikan bahwa variabel apa pun yang diperlukan untuk setiap fase tersedia di setiap skrip.
Anda membuat skrip untuk setiap fase:
- Skrip startup menjalankan proses tahap .
- Skrip masuk menjalankan proses register .
- Skrip logoff menjalankan proses deregister .
- Skrip matikan menjalankan proses destage .
Catatan
Anda dapat menggunakan penjadwal tugas untuk menjalankan skrip tahap. Untuk menjalankan skrip, atur pemicu tugas ke Saat komputer dimulai dan aktifkan Jalankan dengan hak istimewa tertinggi.
Gunakan paket secara offline
Jika Anda menggunakan paket dari Microsoft Store untuk Bisnis atau Microsoft Store untuk Pendidikan di perangkat yang tidak terhubung ke internet, Anda perlu mendapatkan lisensi paket dari Microsoft Store dan menginstalnya di perangkat Anda agar berhasil menjalankan aplikasi. Jika perangkat Anda online dan dapat terhubung ke Microsoft Store untuk Bisnis, lisensi yang diperlukan harus diunduh secara otomatis, tetapi jika Anda offline, Anda perlu menyiapkan lisensi secara manual.
Untuk menginstal file lisensi, Anda perlu menggunakan skrip PowerShell yang memanggil MDM_EnterpriseModernAppManagement_StoreLicenses02_01
kelas di Penyedia Jembatan WMI.
Berikut cara menyiapkan lisensi untuk penggunaan offline:
Unduh paket aplikasi, lisensi, dan kerangka kerja yang diperlukan dari Microsoft Store untuk Bisnis. Anda memerlukan file lisensi yang dikodekan dan tidak dikodekan. Untuk mempelajari cara mengunduh aplikasi berlisensi offline, lihat Mendistribusikan aplikasi offline.
Jalankan perintah PowerShell berikut sebagai administrator. Anda dapat menginstal lisensi berada di akhir fase penahapan. Anda perlu mengedit variabel berikut:
$contentID
adalah nilai ContentID dari file lisensi yang tidak dikodekan (.xml
). Anda dapat membuka file lisensi di editor teks pilihan Anda.$licenseBlob
adalah seluruh string untuk blob lisensi dalam file lisensi yang Dikodekan (.bin
). Anda dapat membuka file lisensi yang dikodekan di editor teks pilihan Anda.$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 }
Skrip demonstrasi
Anda dapat menemukan skrip demonstrasi untuk keempat tahap pengujian paket MSIX dan bantuan sintaks untuk cara menggunakannya di repositori GitHub kami. Skrip ini berfungsi dengan versi PowerShell apa pun dan format gambar disk apa pun.
Langkah berikutnya
Pelajari selengkapnya tentang lampiran aplikasi MSIX dan lampiran aplikasi di Azure Virtual Desktop: