×
Namespaces

Variants
Actions
Revision as of 08:15, 30 November 2012 by hamishwillee (Talk | contribs)

How to display the app version on a Windows Phone page

From Nokia Developer Wiki
Jump to: navigation, search

It's not as simple as it may seem to display the current app version in a Windows Phone 7 app. Here you'll see how this can be solved.

WP Metro Icon UI.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata
Code ExampleCompatibility
Platform(s): Windows Phone 7 Silverlight and later
Windows Phone 8
Windows Phone 7.5
Article
Created: influencer (03 Nov 2012)
Last edited: hamishwillee (30 Nov 2012)

Necessary Steps

In a Windows Phone app there are at least two places where a version number is contained:

  • The WMAppManifest.xml file and
  • the AssemblyInfo of the main app assembly.

My solution to the problem involves reading out the contents of the WMAppManifest.xml file that's contained in every XAP package. If for whatever reason the manifest can't be open, the function will fall back to parsing the version from the AssemblyQualifiedName.

So what you'll have to do first is keeping the version number in those two places accurate.

AssemblyInfo.cs:

[assembly: AssemblyVersion("1.1.0.0")]

WMAppManifest.xml:

ValueConverterSampleWMAppManifest.png

Next add a GetVersion() method to the App.xaml.cs code-behind file that reads out the version number:

public static string GetVersion()
{
Uri manifest = new Uri("WMAppManifest.xml", UriKind.Relative);
var si = Application.GetResourceStream(manifest);
 
// If we can open the WMAppManifest.xml file, parse it using XDocument and find the 'Version' attribute of the 'App' element.
if (si != null)
{
XDocument document = XDocument.Load(si.Stream);
XElement appNode = document.Descendants(XName.Get("App")).FirstOrDefault();
 
if (appNode != null)
{
XElement appElement = document.Element(XName.Get("App"));
 
if (appElement != null)
{
return appElement.Attribute(XName.Get("Version")).Value;
}
}
}
 
// If not, get the assembly version from the qualified name.
AssemblyName name = new AssemblyName(typeof(App).AssemblyQualifiedName);
return name.Version.ToString();
}

Then you can show the version number on a page by setting the text of a TextBlock, e.g. in the constructor of the page:

ApplicationTitle.Text += " Version " + App.GetVersion();

ConverterScreen.png

Sample Code

Sample code to this article is contained in the Media: ValueConverterSample.zip sample code for the Collection of Value converters for Windows Phone apps.

263 page views in the last 30 days.
×