9

I have a console application that I'm deploying using ClickOnce. Once the user installs the program the associations are set but the associated program is the installer(ClickOnce Application Deployment Support Library) and not the actual program. How can I get the association to be the actual program and not the installer?

I've included the fileAssociation node from the app.manifest below. Please let me know if you have any tips on this. Thanks.

<fileAssociation xmlns="urn:schemas-microsoft-com:clickonce.v1" 
               extension=".aav" 
               description="My Program" 
               progid="MyProgram" 
               defaultIcon="myIcon.ico" />

Tested on 3 different computers ranging from Windows XP, Vista, Windows 7. Trust level is full trust. Auto Update is set to fire pre-launch.

strickland
  • 1,943
  • 5
  • 21
  • 40
  • Some more info would be nice: Auto Update settings, Trust level, tested on other PC ? – H H Nov 19 '09 at 09:11
  • Tested on 3 different computers ranging from Windows XP, Vista, Windows 7. Trust level is full trust. Auto Update is set to fire pre-launch. – strickland Nov 19 '09 at 12:23

3 Answers3

22

The problem stemmed for 1 not necessarily understanding ClickOnce, thanks codeConcussion for the brief overview.

And 2, that ClickOnce does not pass things through the traditional args format but through the following property: AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData

codeConcussion
  • 12,739
  • 8
  • 49
  • 62
strickland
  • 1,943
  • 5
  • 21
  • 40
6

I think this is just a misunderstanding of how ClickOnce works. A ClickOnce application's main exe is never launched directly. Applications are started through the deployment manifest (.application file) on the server. If you open your application's start menu shortcut in a text editor you can see it points back to the .application file, not the local .exe.

This allows all the update magic to happen. If your .aav file was associated to the local .exe, the user wouldn't get any updates when opening the application through a .aav file.

You stated it "launches the installer" when you double click a file; does your application start after that? Could you explain the final result you are expecting?

codeConcussion
  • 12,739
  • 8
  • 49
  • 62
0

From .net 6 and above AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData is not available anymore. The args are now available through the environment variables ClickOnce_ActivationData_N

So to get the file path it would be:

String? arg = Environment.GetEnvironmentVariable("ClickOnce_ActivationData_0");
MazarD
  • 2,759
  • 2
  • 22
  • 33