MSIX-csomagok tesztelése appcsatlakoztatáshoz
Ez a cikk bemutatja, hogyan csatlakoztathat MSIX-csomagokat az Azure Virtual Desktopon kívül, hogy segítsen tesztelni a csomagokat az alkalmazás csatolásához. A Power App által csatolt API-k Windows 11 Nagyvállalati verzió és Windows 10 Enterprise rendszerhez érhetők el. Ezek az API-k az Azure Virtual Desktopon kívül is használhatók teszteléshez, de nincs felügyeleti sík alkalmazás csatolásához vagy MSIX-alkalmazás csatolásához az Azure Virtual Desktopon kívül.
Az alkalmazás csatolásáról és az MSIX-alkalmazás csatolásáról további információt az Alkalmazás csatolása és az MSIX-alkalmazás csatolása az Azure Virtual Desktopban című témakörben talál.
Előfeltételek
Mielőtt tesztelhet egy csomagot, hogy kövesse a cikkben szereplő utasításokat, a következő dolgokra van szüksége:
Windows 11 Nagyvállalati verzió vagy Windows 10 Enterprise rendszert futtató eszköz.
Az MSIX formátumból az alkalmazás csatolásával használható képké bővült alkalmazás. Megtudhatja, hogyan hozhat létre MSIX-rendszerképet alkalmazás csatolásával az Azure Virtual Desktopban.
Ha CimFS-rendszerképet használ, telepítenie kell a CimDiskImage PowerShell-modult.
Az MSIX-csomag teszteléséhez használt eszközön helyi rendszergazdai engedéllyel rendelkező felhasználói fiók.
Nincs szükség Azure Virtual Desktop-telepítésre, mert ez a cikk az Azure Virtual Desktopon kívüli tesztelés folyamatát ismerteti.
Feljegyzés
Microsoft ügyfélszolgálata nem támogatja a CimDiskImage PowerShell-modult, ezért ha bármilyen problémába ütközik, be kell küldenie egy kérést a modul GitHub-adattárába.
Fázisok
Az Azure Virtual Desktopon kívüli MSIX-csomagok használatához négy különböző fázist kell végrehajtania a következő sorrendben:
- Szakasz
- Regisztráció
- Regisztráció törlése
- Destage
Az előkészítés és az előkészítés gépszintű műveletek, míg a regisztráció és a regisztráció törlése felhasználói szintű műveletek. A használni kívánt parancsok a PowerShell használt verziójától és a lemezképek CimFS, VHDX vagy VHD formátumától függően változnak.
Feljegyzés
Minden MSIX-csomag tartalmaz egy tanúsítványt. Önnek kell gondoskodnia arról, hogy az MSIX-csomagok tanúsítványai megbízhatóak legyenek a környezetben.
Előkészítés MSIX-csomag előkészítésére
Az előkészítési szkript előkészíti a gépet az MSIX-csomag fogadására, és csatlakoztatja a megfelelő csomagot a géphez.
Válassza ki a használt PowerShell-verzió megfelelő lapját.
A csomagok PowerShell 6-os vagy újabb verziójával történő szakaszolásához az előkészítési műveletek előtt az alábbi parancsokat kell futtatnia, hogy a Windows-futtatókörnyezet csomag képességeit a PowerShellbe hozza.
Nyisson meg egy PowerShell-kérést rendszergazdaként.
Futtassa a következő parancsot a Windows-futtatókörnyezet csomag letöltéséhez és telepítéséhez. Gépenként csak egyszer kell futtatnia a következő parancsokat.
#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
Ezután futtassa a következő parancsot a Windows-futtatókörnyezet-összetevők elérhetővé tétele a PowerShellben:
#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-csomag előkészítése
Most, hogy előkészítette a gépet az MSIX-csomagok előkészítésére, csatlakoztatnia kell a lemezképet, majd be kell fejeznie az MSIX-csomag előkészítését.
Lemezkép csatlakoztatása
A lemezképek csatlakoztatásának folyamata attól függően változik, hogy a lemezkép CimFs, VHDX vagy VHD formátumát használja-e. Válassza ki a használt formátum megfelelő lapját.
CimFS-lemezkép csatlakoztatása:
Ugyanabban a PowerShell-munkamenetben futtassa a következő parancsot:
$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
Tartsa meg a változót
$deviceId
. A cikk későbbi részében szüksége lesz ezekre az információkra.Ha elkészült, folytassa a lemezképek előkészítési folyamatának befejezésével.
Lemezkép előkészítésének befejezése
Végül az alábbi parancsokat kell futtatnia az összes képformátumhoz a lemezkép előkészítési folyamatának befejezéséhez. Ez a parancs az $deviceId
előző szakaszban a lemezkép csatlakoztatásakor létrehozott változót használja.
Ugyanabban a PowerShell-munkamenetben kérje le az alkalmazás adatait az alábbi parancsok futtatásával:
$manifest = Get-ChildItem -LiteralPath $deviceId -Recurse -File AppxManifest.xml $manifestFolder = $manifest.DirectoryName
Kérje le az MSIX-csomag teljes nevét, és tárolja egy változóban az alábbi parancsok futtatásával. Ez a változó a későbbi lépésekhez szükséges.
$msixPackageFullName = $manifestFolder.Split('\')[-1] Write-Output $msixPackageFullName
Az alábbi parancsok futtatásával hozzon létre egy abszolút URI-t a Csomagkezelő API jegyzékmappája számára:
$folderUri = $maniFestFolder.Replace('\\?\','file:\\\') $folderAbsoluteUri = ([Uri]$folderUri).AbsoluteUri
Az abszolút URI használatával az alkalmazáscsomagot az alábbi parancsok futtatásával rendezheti:
$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")
Az alábbi parancsok futtatásával monitorozza az alkalmazáscsomag átmeneti állapotát. A csomag előkészítési ideje a méretétől függ. A
Status
változó tulajdonsága$stagingResult
akkor leszRanToCompletion
, ha az előkészítés befejeződött.$stagingResult = $asTaskAsyncOperation.Invoke($null, @($asyncOperation)) while ($stagingResult.Status -eq "WaitingForActivation") { Write-Output "Waiting for activation..." Start-Sleep -Seconds 5 } Write-Output $stagingResult
Miután előkészítette az MSI-csomagot, regisztrálhatja az MSIX-csomagot.
MSIX-csomag regisztrálása
MSIX-csomag regisztrálásához futtassa az alábbi parancsokat ugyanabban a PowerShell-munkamenetben. Ez a parancs az $msixPackageFullName
előző szakaszban létrehozott változót használja.
$manifestPath = Join-Path (Join-Path $Env:ProgramFiles 'WindowsApps') (Join-Path $msixPackageFullName AppxManifest.xml)
Add-AppxPackage -Path $manifestPath -DisableDevelopmentMode -Register
Most, hogy az MSIX-csomag regisztrálva lett, az alkalmazásnak elérhetőnek kell lennie a munkamenetben való használatra. Most már megnyithatja az alkalmazást teszteléshez és hibaelhárításhoz. Ha végzett, törölje az MSIX-csomag regisztrációját és destage-ját.
MSIX-csomag regisztrációja törlése
Ha végzett az MSIX-csomaggal, és készen áll az eltávolítására, először törölnie kell azt. Az MSIX-csomag regisztrációjának törléséhez futtassa az alábbi parancsokat ugyanabban a PowerShell-munkamenetben. Ezek a parancsok ismét lekérik a lemez paraméterét DeviceId
, és eltávolítják a csomagot az $msixPackageFullName
előző szakaszban létrehozott változóval.
$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-csomag destage
Végül az MSIX-csomag leválasztásához le kell bontania a lemezképet, futtassa a következő parancsot ugyanabban a PowerShell-munkamenetben, hogy a csomag még ne legyen regisztrálva egyetlen felhasználónál sem. Ez a parancs az $msixPackageFullName
előző szakaszban létrehozott változót használja.
Remove-AppxPackage -AllUsers -Package $msixPackageFullName -ErrorAction SilentlyContinue
Lemezkép leválasztása
Az előkészítési folyamat befejezéséhez le kell választania a lemezeket a rendszerből. A használni kívánt parancs a lemezkép formátumától függ. Válassza ki a használt formátum megfelelő lapját.
CimFS-lemezkép leválasztásához futtassa a következő parancsokat ugyanabban a PowerShell-munkamenetben:
Dismount-CimDiskImage -DeviceId $deviceId
Miután befejezte a lemezek leválasztását, biztonságosan eltávolította az MSIX-csomagot.
Szimulációs szkriptek beállítása az MSIX-alkalmazás csatolási ügynökéhez
Ha automatikusan szeretne MSIX-csomagokat hozzáadni és eltávolítani az eszközre, a cikkben szereplő PowerShell-parancsokkal indításkor, bejelentkezéskor, kijelentkezéskor és leállításkor futó szkripteket hozhat létre. További információ: Indítási, leállítási, bejelentkezési és emblémázási szkriptek használata a csoportházirendben. Győződjön meg arról, hogy az egyes fázisokhoz szükséges változók minden szkriptben elérhetők.
Minden fázishoz létre kell hoznia egy szkriptet:
- Az indítási szkript futtatja a fázisfolyamatot .
- A bejelentkezési szkript futtatja a regisztrációs folyamatot.
- A kijelentkezés szkriptje futtatja a regisztráció törlését .
- A leállítási szkript futtatja a destage folyamatot.
Feljegyzés
A feladatütemezővel futtathatja a szakaszszkriptet. A szkript futtatásához állítsa a feladat-eseményindítót a számítógép indításakor , és engedélyezze a futtatás a legmagasabb jogosultságokkal.
Csomagok offline használata
Ha olyan eszközökön használ csomagokat, amelyek nem csatlakoznak az internethez, győződjön meg arról, hogy a csomaglicencek telepítve vannak az eszközön az alkalmazás sikeres futtatásához. Ha az eszköz online állapotban van, a szükséges licenceket automatikusan le kell tölteni.
A licencfájlok telepítéséhez egy PowerShell-szkriptet kell használnia, amely meghívja az osztályt MDM_EnterpriseModernAppManagement_StoreLicenses02_01
a WMI-hídszolgáltatóban.
Az alábbiak szerint állíthat be licencet offline használatra:
Töltse le az alkalmazáscsomagot, a licencet és a szükséges keretrendszereket a Microsoft Store Vállalatoknak. Szüksége van a kódolt és a kódolatlan licencfájlokra is. Az offline licenccel rendelkező alkalmazások letöltéséről az offline alkalmazások terjesztése című témakörben olvashat.
Futtassa a következő PowerShell-parancsokat rendszergazdaként. Telepítheti a licencet az előkészítési fázis végén. A következő változókat kell szerkesztenie:
$contentID
A kódolatlan licencfájl.xml
() ContentID-értéke. A licencfájlt egy tetszőleges szövegszerkesztőben nyithatja meg.$licenseBlob
A kódolt licencfájl.bin
() licencblob teljes sztringje. A kódolt licencfájlt megnyithatja egy tetszőleges szövegszerkesztőben.$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 }
Bemutató szkriptek
Az MSIX-csomagok tesztelésének mind a négy szakaszához talál bemutató szkripteket, és szintaxist is találhat a GitHub-adattárban való használatukhoz. Ezek a szkriptek a PowerShell bármely verziójával és bármilyen lemezképformátummal működnek.
Következő lépések
További információ az alkalmazás csatolásáról és az MSIX-alkalmazás csatolásáról az Azure Virtual Desktopban: