krrishna
krrishna

Reputation: 2078

How to get a ClickOnce application path and version number using C#/.NET code?

I want to get the path and version number of a ClickOnce application, provided the name of the ClickOnce application.

When I manually searched for it, I found it at the path as follows:

'C:\Users\krishnaim\AppData\Local\Apps\2.0\1HCG3KL0.K41\VO5BM4JR.RPO\head..tion_7446cb71d1187222_0005.0037_37dfcf0728461a82\HeadCount.exe'

But this keeps on changing, and it will become a hard-coded path. Is there another way to get a ClickOnce application (for example, HeadCount.exe which is already installed) path and version number using C#/.NET code?

Upvotes: 1

Views: 6870

Answers (2)

EdFred
EdFred

Reputation: 711

In order to do a ClickOnce application update you do not have to do so manually as long as you are using the standard deployment manifests (which I don't know how to ClickOnce unless you do use them).

The MSDN article Choosing a ClickOnce Update Strategy describes the different options for application updates.

Upvotes: 0

EdFred
EdFred

Reputation: 711

It seems a little bizarre, but getting the current directory of the executing assembly is a bit tricky so my code below may be doing more than you think it should, but I assure you it is mitigating some issues where others may attempt to use Assembly.GetExecutingAssembly.Location property.

static public string AssemblyDirectory
{
    get
    {
        //Don't use Assembly.GetExecutingAssembly().Location, instead use the CodeBase property
        string codeBase = Assembly.GetExecutingAssembly().CodeBase;
        UriBuilder uri = new UriBuilder(codeBase);
        string path = Uri.UnescapeDataString(uri.Path);
        return System.IO.Path.GetDirectoryName(path);
    }
}

static public string AssemblyVersion
{
    get
    {
        var asm = Assembly.GetExecutingAssembly();
        //If you want the full four-part version number:
        return asm.GetName().Version.ToString(4);

        //You can reference asm.GetName().Version to get Major, Minor, MajorRevision, MinorRevision
        //components individually and do with them as you please.
    }
}

Upvotes: 4

Related Questions