File Associations in ClickOnce Applications

One of the really cool features of ClickOnce applications is the ability to set file associations

Note: File associations can only be set for Full Trust ClickOnce applications

The MSDN article walks you through creating a file association using XML in the application manifest, but most developers will find it easier to use the Project Properties screen:

image

image

Unfortunately, this is where the MSDN documentation leaves off, which tells you nothing about how your application knows the location of the file it is supposed to open.  With a ClickOnce application, the file location is not passed in as a command line argument, it is actually in

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0]

One other interesting point is that the file location in ActivationData is in a uri form such as file://c:/temp/Test%20File.testApp.  In order to use this as a path to IO functions like File.Exists, you’ll need to create a Uri from it, get the absolute path of the Uri, and Unescape the string (to convert %20 to a space):

image