What's in a Name

With the beta 1 release of Whidbey, you'll start to see that many of the ClickOnce APIs require an application name.  This application name isn't a simple name, like “Microsoft Word” or “HelloWorld”.  Instead it is made up of three components, and allows ClickOnce to uniquely identify an application.

Before I can talk about the parts of the application's name, we need a quick recap on ClickOnce manifests.  Every ClickOnce application is fully described by a pair of manifests, the deployment manifest (which generally ends with a .application extension), and the application manifest (which generally ends in .exe.manifest).   The deployment manifest serves to point at the application manifest for a specific version of an app, and the application manifest describes that application.

Both manifests are XML files, and both  contain an application identity as one of their XML tags.  For a basic hello world application, the identity tag might look like this:

<assemblyIdentity name="HelloWorld" version="1.0.0.0" publicKeyToken="3af62260b55ea74b" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />

With a little work that XML tag can be transformed to string that looks like traditional assembly identity strings:

HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af62260b55ea74b, processorArchitecture=msil

Since both the application and deployment manifests contain identities, we can make one of these strings for each manifest.  Both of these strings go into forming the application's name.  The third component of the name is the URL where the applicaiton file originally came from.  Note, this must be a URL, so if the manifest came from a file share, you would need to use file://\\server\share\helloworld.manifest.

Once all three pieces of the name are known, creating the fnal name is easy.  The format is as follows:

URL#DeploymentName\ApplicationName

So a helloworld application migh have a name like this:

https://www.helloworld.com/ClickOnce/HelloWorld.application\#HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af62260b55ea74b, processorArchitecture=msil\HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af62260b55ea74b, processorArchitecture=msil

Now for some disclaimers ... this was just an “under the hood” exploration of application names, and should not be considered official documentation for the format of the application name, which may change at some point in the future or even before we ship the final version of Whidbey.  You may never need to determine the name on your own, as only low level ClickOnce APIs require it.