Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak připojit balíčky MSIX mimo Službu Azure Virtual Desktop, abyste mohli otestovat připojení aplikace. Rozhraní API power app attach jsou k dispozici pro Windows 11 Enterprise a Windows 10 Enterprise. Tato rozhraní API je možné použít k testování mimo službu Azure Virtual Desktop, ale pro připojení aplikace mimo Azure Virtual Desktop neexistuje žádná rovina správy.
Další informace o připojení aplikace najdete v tématu Připojení aplikace ve službě Azure Virtual Desktop.
Požadavky
Než budete moct balíček otestovat podle pokynů v tomto článku, potřebujete následující:
Zařízení se systémem Windows 11 Enterprise nebo Windows 10 Enterprise.
Aplikace, kterou jste rozbalili z formátu MSIX na obrázek, který můžete použít s připojením aplikace. Zjistěte, jak vytvořit image MSIX pro použití s připojením aplikace ve službě Azure Virtual Desktop.
Pokud používáte image CimFS, musíte nainstalovat modul CimDiskImage PowerShellu.
Uživatelský účet, který má na zařízení, které používáte k otestování balíčku MSIX, oprávnění místního správce.
Nasazení služby Azure Virtual Desktop nepotřebujete, protože tento článek popisuje proces testování mimo Službu Azure Virtual Desktop.
Poznámka
podpora Microsoftu nepodporuje modul CimDiskImage PowerShellu, takže pokud narazíte na nějaké problémy, budete muset odeslat žádost do úložiště GitHub daného modulu.
Fází
Pokud chcete používat balíčky MSIX mimo Azure Virtual Desktop, musíte provést čtyři různé fáze v následujícím pořadí:
- Etapa
- Registrace
- Odhlásit
- Destage
Příprava a destagování jsou operace na úrovni počítače, zatímco registrace a zrušení registrace jsou operace na úrovni uživatele. Příkazy, které potřebujete použít, se liší podle toho, jakou verzi PowerShellu používáte a jestli jsou image disků ve formátu CimFS, VHDX nebo VHD .
Poznámka
Všechny balíčky MSIX obsahují certifikát. Zodpovídáte za to, aby certifikáty pro balíčky MSIX byly ve vašem prostředí důvěryhodné.
Příprava na přípravu balíčku MSIX
Přípravný skript připraví váš počítač na přijetí balíčku MSIX a připojí příslušný balíček k vašemu počítači.
Vyberte příslušnou kartu pro verzi PowerShellu, kterou používáte.
Pokud chcete balíčky připravit pomocí PowerShellu 6 nebo novějšího, musíte před přípravou operací spustit následující příkazy, abyste do PowerShellu přenesli možnosti balíčku prostředí Windows Runtime.
Otevřete příkazový řádek PowerShellu jako správce.
Spuštěním následujícího příkazu stáhněte a nainstalujte balíček prostředí Windows Runtime. Následující příkazy stačí spustit jenom jednou pro každý počítač.
#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-PackageDále spuštěním následujícího příkazu zpřístupněte komponenty prostředí Windows Runtime v PowerShellu:
#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
Příprava balíčku MSIX
Teď, když jste počítač připravili na přípravu balíčků MSIX, musíte připojit image disku a pak dokončit přípravu balíčku MSIX.
Připojení image disku
Postup připojení image disku se liší v závislosti na tom, jestli pro image disku používáte formát CimFs, VHDX nebo VHD . Vyberte příslušnou kartu pro formát, který používáte.
Připojení image disku CimFS:
Ve stejné relaci PowerShellu spusťte následující příkaz:
$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 $deviceIdZachovejte proměnnou
$deviceId. Tyto informace budete potřebovat dále v tomto článku.Až budete hotovi, pokračujte k dokončení přípravy image disku.
Dokončení přípravy image disku
Nakonec musíte spustit následující příkazy pro všechny formáty imagí, abyste dokončili přípravu image disku. Tento příkaz používá proměnnou $deviceId , kterou jste vytvořili při připojení image disku v předchozí části.
Ve stejné relaci PowerShellu načtěte informace o aplikaci spuštěním následujících příkazů:
$manifest = Get-ChildItem -LiteralPath $deviceId -Recurse -File AppxManifest.xml $manifestFolder = $manifest.DirectoryNameSpuštěním následujících příkazů získejte úplný název balíčku MSIX a uložte ho do proměnné. Tato proměnná je potřebná pro pozdější kroky.
$msixPackageFullName = $manifestFolder.Split('\')[-1] Write-Output $msixPackageFullNameSpuštěním následujících příkazů vytvořte absolutní identifikátor URI pro složku manifestu pro rozhraní API Správce balíčků:
$folderUri = $maniFestFolder.Replace('\\?\','file:\\\') $folderAbsoluteUri = ([Uri]$folderUri).AbsoluteUriPomocí absolutního identifikátoru URI připravte balíček aplikace spuštěním následujících příkazů:
$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")Spuštěním následujících příkazů můžete monitorovat průběh přípravy balíčku aplikace. Doba potřebná k vytvoření balíčku závisí na jeho velikosti. Vlastnost
Status$stagingResultproměnné budeRanToCompletionpo dokončení přípravy.$stagingResult = $asTaskAsyncOperation.Invoke($null, @($asyncOperation)) while ($stagingResult.Status -eq "WaitingForActivation") { Write-Output "Waiting for activation..." Start-Sleep -Seconds 5 } Write-Output $stagingResult
Jakmile je balíček MSI připravený, můžete ho zaregistrovat.
Registrace balíčku MSIX
Pokud chcete zaregistrovat balíček MSIX, spusťte následující příkazy ve stejné relaci PowerShellu. Tento příkaz používá proměnnou $msixPackageFullName vytvořenou v předchozí části.
$manifestPath = Join-Path (Join-Path $Env:ProgramFiles 'WindowsApps') (Join-Path $msixPackageFullName AppxManifest.xml)
Add-AppxPackage -Path $manifestPath -DisableDevelopmentMode -Register
Teď, když je váš balíček MSIX zaregistrovaný, by vaše aplikace měla být k dispozici pro použití ve vaší relaci. Teď můžete aplikaci otevřít pro účely testování a řešení potíží. Jakmile budete hotovi, budete muset zrušit registraci a destage balíčku MSIX.
Zrušení registrace balíčku MSIX
Jakmile balíček MSIX dokončíte a budete ho chtít odebrat, musíte ho nejdřív zrušit. Pokud chcete zrušit registraci balíčku MSIX, spusťte následující příkazy ve stejné relaci PowerShellu. Tyto příkazy znovu získají parametr disku DeviceId a odeberou balíček pomocí $msixPackageFullName proměnné vytvořené v předchozí části.
$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 balíčku MSIX
Nakonec, pokud chcete balíček MSIX destage, musíte odpojit image disku, spusťte následující příkaz ve stejné relaci PowerShellu, abyste se ujistili, že balíček stále není zaregistrovaný pro žádného uživatele. Tento příkaz používá proměnnou $msixPackageFullName vytvořenou v předchozí části.
Remove-AppxPackage -AllUsers -Package $msixPackageFullName -ErrorAction SilentlyContinue
Odpojení image disků
Pokud chcete dokončit proces destagování, musíte disky odpojit od systému. Příkaz, který potřebujete použít, závisí na formátu image disku. Vyberte příslušnou kartu pro formát, který používáte.
Pokud chcete odpojit image disku CimFS, spusťte ve stejné relaci PowerShellu následující příkazy:
Dismount-CimDiskImage -DeviceId $deviceId
Po dokončení odpojení disků jste bezpečně odebrali balíček MSIX.
Nastavení simulačních skriptů pro agenta připojení aplikace
Pokud chcete do zařízení automaticky přidávat a odebírat balíčky MSIX, můžete pomocí příkazů PowerShellu v tomto článku vytvořit skripty, které se spustí při spuštění, přihlášení, odhlášení a vypnutí. Další informace najdete v tématu Použití spouštěcích, vypínání, přihlašování a odhlašovacích skriptů v Zásady skupiny. Musíte se ujistit, že všechny proměnné vyžadované pro každou fázi jsou k dispozici v každém skriptu.
Skript vytvoříte pro každou fázi:
- Spouštěcí skript spustí proces fáze .
- Přihlašovací skript spustí proces registrace .
- Odhlašovací skript spustí proces zrušení registrace .
- Skript vypnutí spustí proces destage .
Poznámka
Ke spuštění skriptu fáze můžete použít plánovač úloh. Pokud chcete skript spustit, nastavte trigger úlohy na Při spuštění počítače a povolte Spustit s nejvyššími oprávněními.
Použití balíčků offline
Pokud balíčky používáte na zařízeních, která nejsou připojená k internetu, musíte se ujistit, že jsou na vašem zařízení nainstalované licence balíčků, aby se aplikace úspěšně spustila. Pokud je vaše zařízení online, měly by se požadované licence stahovat automaticky.
Pokud chcete nainstalovat licenční soubory, musíte použít skript PowerShellu MDM_EnterpriseModernAppManagement_StoreLicenses02_01 , který volá třídu v poskytovateli přemostitu WMI.
Tady je postup, jak nastavit licenci pro offline použití:
Stáhněte si balíček aplikace, licenci a požadované architektury z Microsoft Store pro firmy. Potřebujete kódované i nezakódované licenční soubory. Informace o stažení offline licencované aplikace najdete v tématu Distribuce offline aplikací.
Jako správce spusťte následující příkazy PowerShellu. Licenci můžete nainstalovat na konci přípravné fáze. Musíte upravit následující proměnné:
$contentIDje hodnota ContentID z nezakódovaného licenčního souboru (.xml). Licenční soubor můžete otevřít v textovém editoru podle svého výběru.$licenseBlobje celý řetězec objektu blob licence v zakódovaném licenčním souboru (.bin). Kódovaný licenční soubor můžete otevřít v textovém editoru podle svého výběru.$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 }
Ukázkové skripty
Ukázkové skripty pro všechny čtyři fáze testování balíčků MSIX a nápovědu k jejich použití najdete v našem úložišti GitHub. Tyto skripty pracují s libovolnou verzí PowerShellu a libovolným formátem image disku.
Další kroky
Další informace o připojení aplikace ve službě Azure Virtual Desktop: