Skip to content

PackageDeploymentManager.RegisterPackageAsync() fails while WinRT RegisterPackageByFullNameAsync() succeeds #4791

@whiskhub

Description

@whiskhub

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

  1. Create a packaged app (e.g. WinUI 3)
  2. 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;
  1. 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;
  1. 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;
  1. 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

Metadata

Metadata

Assignees

Labels

Status: In PRarea-DeploymentIssues related to packaging, installation, runtime (e.g., SelfContained, Unpackaged)

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions