cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP Security Notice: CVE-2026-109618 and CVE-2026-109619

    JMP promptly initiated a review of its products, services, and relevant infrastructure for exposure to CVE-2026-109618 and CVE-2026-109619.

    Our assessment of JMP products has not identified exposure to these vulnerabilities. Where remediation was required within supporting environments, appropriate security updates and controls have been applied and validated.

    We have identified no evidence of successful exploitation or unauthorized access to JMP systems or customer information associated with these vulnerabilities.

    JMP continues to monitor the issue and relevant vendor guidance. No action is required by JMP customers at this time.

  • Don’t miss your chance to experience Discovery Summit Europe at our best available rate! Early bird registration through 31 Oct.
  • Graph Builder Toolbar streamlines interactive graphing. Creates shortcuts on Report and GraphBuilder Helpers toolbars. Download and install the extension.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
kyle_lamson
Level II

Clickonce Application

Does anyone have the syntax needed to run a clickonce application. I've tried

RunProgram(executable("clickonce application"));

Which I figured wouldn't work. Are there any other options?

4 REPLIES 4
txnelson
Super User

Re: Clickonce Application

The following might be of use, it was taken from:

http://www.brad-smith.info/blog/archives/535

Starting ClickOnce applications

Unlike normal executables, applications deployed using ClickOnce are started using a bootstrapper (which is normally handled by the shell). This includes applications written in Windows Forms, WPF or Silverlight. Shortcuts to ClickOnce apps have the extension .appref-ms (rather than .lnk for regular shortcuts), and these files are not recognised by the start command (as in the previous example).

Thankfully, they can be run using the following syntax:

1rundll32.exe dfshim.dll,ShOpenVerbShortcut [path to appref-ms file]

Where [path to appref-ms file] is the full path to the ClickOnce shortcut file. The path may include environment variables such as %USERPROFILE% if, for example, you want to point to a shortcut on the user’s desktop.

How does this work?

  • The rundll32 command executes a function in a Win32 DLL as if it were an executable file. You might want to use this when you have a function which is predominantly called from code (but still operates independently), if you want to avoid creating many executables when a single DLL will suffice, or to deliberately obfuscate a command that users are not intended to start.
  • dfshim.dll is responsible for much of the functionality in ClickOnce; it contains functions to install, remove, start and update applications, and is distributed as part of the .NET Framework.
  • The name of the function we want is ShOpenVerbShortcut, which is the same function that the windows shell uses to run .appref-ms shortcut files. You simply pass a path to the function and it takes care of the rest.
Jim
pzang
Level III

Re: Clickonce Application

The rundll32 method works by itself but I cannot find a way to pass parameter to the .appref-ms.  I eventually solved the problem by using the following:

 

 

RunProgram(
	executable( "cmd.exe" ),
	options(
		{"/c",
		"\!"PathToShortcut.appref-ms\!"",
		"parameter"}
	),
	readfunction( "text" )
);

I added the double quotes to my PathToShortcut.appref-ms because it has spaces.

 

pzang
Level III

Re: Clickonce Application

Using the rundll32 method, the parameter can be passed to the clickonce program like below:

RunProgram(
	executable( "rundll32.exe" ),
	options( {"dfshim.dll,ShOpenVerbShortcut","PathToShortcut.appref-ms|parameter"} ), 
	readfunction( "text" )
);

 

kyle_lamson
Level II

Re: Clickonce Application

I figured it out after enough poking around.

web("clickonce application.appref-ms");

Recommended Articles