Existing Windows RT, new Windows Phone, how should we package them?


  • We have an existing Windows RT app on the store, created using an app bundle, which contains separate x86, x64 and ARM apps. We now want to add a Windows Phone 8.1. Because it's a separate csproj, I assumed I had to enable "app bundle" on this new project, and build it separately.

    Unfortunately, I'm now getting many issues with our build server. I can't seem to configure the builds correctly. The "WinRT" build succeeds, but a "WP81 ARM" test package is created in the AppPackages folder, even though the build configuration does not build anything WP81-related. The WP81 build fails with the below error, even if nothing WinRT-related is built.

    MakeAppx: Error info: error 80080204: All app package manifests in a bundle must declare the same values under the XPath m:Package/m:Applications/m:Application[@Id='App']/*[local-name()='VisualElements'].  The values under this XPath declared in the manifest for the package with file name "{APPNAME}.WinRT_1.0.0.690_ARM.appx" and package full name "{IDENTITYNAME}_1.0.0.690_arm__hpt16c9c0eesj" at line 33, column 8 don't match those declared in the manifest for the package with file name "{APPNAME}.WPA81_1.0.0.690_x86.appx" and package full name "{IDENTITYNAME}_1.0.0.690_x86__hpt16c9c0eesj" at line 23, column 8.

    WinRT's app bundle platorms are x86|x64|ARM (can't use neutral, dependencies) and WP81's app bundle platforms are x86|ARM (can't use neutral either).

    Before trying to address the specific error above, is my approach the correct one? How should one build his packages in a similar situation?

    Thank you.

    Wednesday, July 16, 2014 7:53 PM

All replies

  • I found my issue, but it raises another question. My main solution has two special configurations: Release_WinRT and Release_WPA81. Projects don't have these configs, they map to "Release". The first only builds and deploys WinRT stuff, and the second only WP81 stuff. It turns out the solution's "Release" config for the "ARM" platform is including all projects.

    • We ask MSBuild to build the solution for Release_WinRT | x86.
    • It builds all included projects for Release_WinRT | x86
    • The <AppxBundle*> stuff in the main project causes a second wave of builds to trigger
    • It builds all included projects for Release | x64 and Release | ARM because the main project doesn't have a "Release_WinRT" or "Release_WPA81" config, the solution's configs point to "Release"

    I will probably create a "Release_WinRT" config in WinRT's main project, and a "Release_WPA81" config in WP8.1's main project.

    It would have been much simpler if we could have a single package (we don't) and no platform dependency. Now, I just need confirmation I'm doing things right!

    Thursday, July 17, 2014 3:33 PM