Asked by:

"DEP2500" error when deploying Metro app built from a Makefile project

Question

We're trying to set up our Makefile-based projects to make Metro applications that can be debugged through Visual Studio.

This has mostly been fine; the application has been marked as as AppContainerApplication in its vcxproj, and our Makefile build process has been set up to produce an appxrecipe file, which VS is picking up correctly.

Deploying the application in Visual Studio creates the appx "Layout" folder correctly and registers it with the operating system (the resulting application runs fine from the start menu), but after registration the deployment process aborts with the following
error:

This causes Visual Studio to think that deployment has failed, so it can't start debugging.

Visual Studio does seem to be aware of the correct application ID, as attempting to deploy a second time brings up a dialog warning that the app is already deployed and asks whether we want to uninstall and redeploy it. So my question is, what is Visual
Studio looking for when it complains that "package registration information cannot be found"? Is there something besides the appxrecipe file that we need to set up to make deployment work?

Sorry, I should have been clearer on that part. Complete repro steps would be very long, but I'll try to cover the broad steps involved:

We create a Visual Studio project with the "Makefile" configuration type, and set up its command lines to call our external build system (The Makefile project wizard can be found under "Visual C++/General").

We mark this project as an AppContainerApplication project (this option isn't exposed through the UI, so the flag needs to be added to the vcxproj either by a custom VS extension or by hand).

Our external build system is set up to generate an ".appxrecipe" file and put it in the project output directory, just as the standard VS Build does.

We Build the project in VS; our external build system compiles the application and produces an appxrecipe file pointing to our application, its AppxManifest.xml and its assets.

We Deploy the project in VS; VS correctly creates the layout directory for our project, puts all the right files in it, and installs the AppxPackage to the operating system (this can be verified through the start menu and through Powershell, and the application
runs correctly). After the installation completes, however, deployment fails with the "DEP2500" error message described in the initial post.

Because VS now believes that deployment has failed, it won't allow us to start debugging. We can still start the application manually and connect the debugger after startup, but that makes it awkward to debug startup issues.

I'm really just looking for some direction on precisely what the error message is referring to when it says "package registration information cannot be found", since the message doesn't seem to have documentation anywhere. It seems likely that something
in either our AppxManifest or our AppxRecipe doesn't match what VS expects, but it would be helpful to narrow down what that could be.

We ran into this one. I'll mention the fix (for us) in hopes it will help the next person reading this thread.

The location that is reported by the error message DEP 2500 must match char for char (case insensitive) the location that is reported by the system as its InstallLocation.

The location reported in the DEP 2500 message comes from the msbuild property LayoutDir, which you can override in your projects.

To get the system reported InstallLocation of the app (after Visual Studio has deployed it, but then failed to start/attach to it)
open powershell and type 'get-appxpackage'

For us the difference was clear at this point, we had an extra backslash at the end of our LayoutDir.

LayoutDir : c:\foo\bar\layout\
Powershell: c:\foo\bar\layout

Removing the extra backslash fixed the issue

For those curious, the place where this string compare happens for VS2012 is in Microsoft.Build.AppxPackage.dll at
Microsoft.VisualStudio.ImmersiveProjectServices.PlatformShim.AppxDeployShim::FindPackageInfo

Saturday, August 24, 2013 12:54 AM

Microsoft is conducting an online survey to understand your opinion of the Msdn Web site. If you choose to participate, the online survey will be presented to you when you leave the Msdn Web site.