microsoft / microsoft/WindowsAppSDK
PackageDeploymentManager.RegisterPackageAsync() fails while WinRT RegisterPackageByFullNameAsync() succeeds
@DrusTheAxe is already working on this.
Since Oct 18, 2024.
- Dominant language
- C++
- Stars
- 4.7k
- Forks
- 471
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 28
Description
Describe the bug
PackageDeploymentManager.RegisterPackageAsync() fails to execute while the WinRT counterpart PackageManager.RegisterPackageByFullNameAsync() succeeds.
The WASDK method returns withPackageDeploymentStatus.CompletedFailure, but empty Error/ErrorText/ExtendedError properties. The console (with native debugging enabled) shows:
Exception thrown at 0x00007FFF613A83EA (KernelBase.dll) in PackageManagerRegisterTest.exe: WinRT originate error - 0x800706BE : 'The remote procedure call failed.'.
Exception thrown at 0x00007FFF613A83EA (KernelBase.dll) in PackageManagerRegisterTest.exe: 0x000006BE: The remote procedure call failed.
onecore\admin\appmodel\packagemanager\client\Helpers.hpp(235)\AppXDeploymentClient.dll!00007FFF596B31C8: (caller: 00007FFF596B562C) LogHr(1) tid(739c) 800706BE The remote procedure call failed.
Exception thrown at 0x00007FFF613A83EA (KernelBase.dll) in PackageManagerRegisterTest.exe: WinRT originate error - 0x80070490 : 'Element not found.'.
The WinRT method succeeds and the package is registered and useable afterwards.
Steps to reproduce the bug
- Create a packaged app (e.g. WinUI 3)
- Stage a (signed, or self-signed in trusted certificate store) MSIX package:
var packageDeploymentManager = PackageDeploymentManager.GetDefault();
var options = new Microsoft.Windows.Management.Deployment.StagePackageOptions();
var uri = new Uri(@"C:\file_path_to_msix.msix");
var operation = packageDeploymentManager.StagePackageByUriAsync(uri, options);
var result = await operation;
- Register the package using full package name and WASDK:
var packageDeploymentManager = PackageDeploymentManager.GetDefault();
var options = new Microsoft.Windows.Management.Deployment.RegisterPackageOptions();
var operation = packageDeploymentManager.RegisterPackageAsync("MyPackage_1.0.0.123_x64__publisherid", options);
var result = await operation;
- Register the package using full package name and WinRT:
var packageManager = new PackageManager();
var operation = packageManager.RegisterPackageByFullNameAsync("MyPackage_1.0.0.123_x64__publisherid", [], DeploymentOptions.None);
var result = await operation;
- Verify the package was registered (e.g. see the app in start menu)
Expected behavior
RegisterPackageAsync() succeeds, same as the WinRT counterpart RegisterPackageByFullNameAsync().
Screenshots
No response
NuGet package version
Windows App SDK 1.6.1: 1.6.240923002
Packaging type
Packaged (MSIX)
Windows version
Windows 11 version 22H2 (22621, 2022 Update)
IDE
Visual Studio 2022
Additional context
No response
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.