Showing ClickOnce deployment version on WPF application
Try this:
public static Version GetPublishedVersion(){ XmlDocument xmlDoc = new XmlDocument(); Assembly asmCurrent = System.Reflection.Assembly.GetExecutingAssembly(); string executePath = new Uri(asmCurrent.GetName().CodeBase).LocalPath; xmlDoc.Load(executePath + ".manifest"); string retval = string.Empty; if (xmlDoc.HasChildNodes) { retval = xmlDoc.ChildNodes[1].ChildNodes[0].Attributes.GetNamedItem("version").Value.ToString(); } return new Version(retval);}
What error do you get? There's no difference in the ClickOnce API's between Windows Forms and WPF. It is not dependent upon any UI framework.
Did you remember to add a reference to System.Deployment.dll?
using System;using System.Deployment.Application;namespace Utils{ public class ClickOnce { public static Version GetPublishedVersion() { return ApplicationDeployment.IsNetworkDeployed ? ApplicationDeployment.CurrentDeployment.CurrentVersion : System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; } }}
If you get an error about System.Deployment.Application
, then Solution > Project > References > Add Reference > Assemblies > Framework > System.Deployment.
Do not parse the assembly XML for this information; you're relying on undocumented behaviour which simply happens to work 'for now'.