Showing ClickOnce deployment version on WPF application Showing ClickOnce deployment version on WPF application wpf wpf

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'.