ClickOnce and FireFox

Firstly sorry for the delay in this messaging from ClickOnce. Judging by the passionate opinions I have heard around the community on this issue, this is a blog we should have posted a while back.

[Hanselman’s Blog –]
[Sven Groot’s Blog –]

[Lady bug – ]

Geting to business; In the V2.0 release of the Framework, ClickOnce does not have support for FireFox. 
–    I do discuss later in this post how application publishers can use the ClickOnce shortcut files to allow FireFox users to install Clickonce applications.

ClickOnce does work on machines where FireFox is the default browser, if the user clicks on the deployment manifest in IE.
–    There is an issues users hit here if their application carries a bootstrapper package, again a workaround is mentioned later in the post.
And yes we are actively looking into remedying this in the next release of the Framework.

What happens when I click on a ClickOnce deployment in FireFox?

ClickOnce provides an implemention of the IE mime handler interface for the mime type application/x-ms-application which is associated with .application files on servers hosting ClickOnce application. Hence when a user clicks on a .application in IE our mime handler is invoked which downlods the .application file and fires up the ClickOnce install.

When a user clicks on a .application in FireFox the FireFox equivalent of the Open/Save dialog comes up. Once the .application file is downloaded to the local macine (to the FireFox cache on Open and to a user specified location on Save) it is run form there firing up ClickOnce. ClickOnce now parses the locally downloaded .application and tries to download the actual application manifest it refers to. If the .application contains a relative path to the application manifest ClickOnce will try to find it relative to the .application in the FireFox temp folder and fail. If it is a full Url to the application manifest ClickOnce fails anyway, this time due to a security check we have that does not allow the .application and the corresponding application bits to be in different security zones.

There have been Plugins written by the FireFox community
[e.g.] where they parse the application after it has been downloaded and read the deploymentProvider Url from it. They then use the undocumented Apis for invoking ClickOnce with the URL as a parameter [rundll32 dfshim.dll,ShOpenVerbApplication URL ]. I have never tried the approach above, but would believe it works.
From the ClickOnce teams perspective we would advise users against parsing the ClickOnce manifest and relying on its format for we could inadvertently break you in future manifest updates. Also since the <deploymentProvider> tag is only needed in Shell Visible installed ClickOnce applications this solution does not work for Online ClickOnce Apps.

For out next release we are looking into what we can do to provide a simple public way for the FireFox community to build plugins for ClickOnce support. Stay tuned …

How do ClickOnce Shortcuts help me get ClickOnce support on FireFox?

Anytime a shell visible installed ClickOnce App is downloaded to a machine, we create a ClickOnce shortcut (.AppRef-MS) for the application under Progrmas->Publisher->Product.AppRef-MS.
The contents of this shortcut file look something like this –http://Foo/Bar/, Culture=neutral, PublicKeyToken=XXXXXXXXXXXX, processorArchitecture=msil
As you can see it contains the Url to the .application and the identity of the deployment manifest modulo version.

These ClickOnce shortcuts are designed so that they can be emailed to people and when ckicked on, on a machine which does not have the corrsponding application already installed they cause the application to be installed and launched.

Now asuming you have an ClickOnce application (Shell Visible Installed App – Not an Online App) you want to publish to your clients who use FireFox, all you need to do is generate the shortcut file and publish it on your server (If you have both IE and FireFox users you could have a seperate link saying “FireFox users click here” so that IE users still get the default behavior). Once the user click on an .appref-MS in FireFox the Open/Save dialog comes up. Once the .appref-MS has been downloaded to the local machine and run it will invoke ClickOnce, which in turn will download the .application from the URL specified in the shortcut and install the App.

This solution works with out any FireFox changes. Remember though that .appref-MS files can only be generated for Shell Visible Installed ClickOnce Apps.

What about client machines where FireFox is the default browser but the user clicks on the .application in IE?

This scenario just works.

There is one caveat though. If your Application carries a bootstrapper along with it to install prerequisites before the actual ClickOnce install, then your scenario might be broken. The bootstrapper after it has installed the prerequisites starts the actual ClickOnce install by launching the .application URL in the default browser (in this case FireFox) even if the user had originally clicked on an IE session to launch the bootstrapper.

There however is a easy workaround for this [] which I have recommended to users earlier with good success.


Again in closing let me reitterate, we are actively working on having a better XBrowser story for our next release.

Comments are welcome as usual.

Comments (30)

  1. PaulG says:

    I’m really glad you guys are working on this.  I work for an ISV and we are making a huge bet that there will be no serious sales objections from our customers to our choice of using online ClickOnce as the deployment model for our next generation application.

    Whenever I demo I always launch from a publish.html page shown in Internet Explorer, which helps get the point across that ClickOnce has all the stuff that makes customers insist on a "browser application".

    However, right now when questions around FireFox come up I have to dance around a bit.  I really think that you guys need to make this a high priority if you want to make sure that ClickOnce is well recieved by an already skeptical crowd.  I know it works with Firefox on the machine but you can’t underestimate the physcology of the customer who wants to see the app launched from a publish.htm in Firefox.

    Can you clarify "the next release"?  Surely you don’t mean the next .Net Framework version?  I mean it took over 2 years from when 1.1 was released until 2.0.  Please tell me you "next release" is a service pack?

    Finally, ClickOnce does indeed rock, thanks for this awesome technology!

  2. Saurabh says:

    Glad you like the technology and we do feel your pain with our lack of XBrowser support.

    We would like to have ClickOnce XBrowser support enabled at the earliest. However it is a bit premature for me to comment on when exactly this will be and what the vehicle will be.  

  3. Saurabh Pant is posting tons of great information about ClickOnce these days. Today, he has a great article…

  4. Thanks for the explanation. Was not supporting FireFox an oversight? A mistake? Or was it on purpose due to schedule? I ask because it could have either worked, or a warning ("don’t use fire fox") could have been issued. But BREAKING causes enterprises who have standardized on FireFox but also want to deploy ClickOnce apps to have a quandry.

    What next version of the framework are you fixing this in? 2.0SP1? 2.1? Orcas (3.0?)

  5. Saurabh says:

    The lack of XBrowser support was a cut we had to make for our V1 release primarialy due to schedule restrictions. We did not view this workitem only as providing FireFox support but rather as providing XBrowser support and wanted to make sure in the next release we had a solution that was browser independent.

    We did toy with the idea of an error dialog for Non IE browsers, the problem here being that for other browsers our code is not called into untill after the .application has been downloaded locally and run. At this point it is just treated as a local .application invocation.

    We are pushing to have this fixed at the earliest on our next release, however cant comment on what the ship vehicle will be at this point.

  6. Chuck says:

    Unbelievable that some manager would cut Xbrowser support from the release.  Not having major browser support render ClickOnce useless. Having professional looking/working installs is so important.

    "And yes we are actively looking into remedying this in the next release of the Framework".

    A proactive company that supports their customers would put out a patch for this; Instead of just considering it for a future non-scheduled release.

  7. I’m also quite shocked to see how much of a burden it is when your default browser is Firefox.

    Not only you need to have 2 seperate links, but even if you create a setup it will launch the .application…in the default browser! which doesn’t work either!

    I really hope it’s going to be fixed _soon_

  8. Garett says:

    In fact ClickOnce deployment partially works with FireFox.

    See more details :

    For another Browser like Opera :

    The next step is to make Opera pass the url to the .application file format to EXPLORER. I would pass this to the appropriate file to run it, but then it won’t be in the right context so we’ll settle for a little dodgyness.

    Click Tools, Preferences, Advanced, Downloads then add a new mime type of application/x-ms-application with an extension of application, then check "Open with other application", enter "explorer.exe" and check "Pass web address directly to application".

    Best Regards

  9. Tanner says:

    This is a major show stopper for using ClickOnce for us.  Without XBrowser support ClickOnce is useless.

  10. I agree about it being a show stopper. I found out about this when I was trying to convince some google-loving firefox fan how great ClickOnce was for quick deployment of real desktop applications. Boy was my face red.

    How could you not test firefox! Geez guys Steve Ballmer better send out a memo letting you all know the days of assuming IE are over. Like it or not.

  11. IT Blog says:

    Es hat einige Zeit gedauert bis Microsoft eine Alternative f&#252;r das Deployment von lokalen Anwendungen per Web Browser hatte. In der Java Welt gibt es hierf&#252;r Java Web Start, das mittels JNLP Protokoll erlaubt einen lokalen Cache zu f&#252;llen,

  12. Friends of Client Development Newsletter – April 2006    WinForms Website UpdatedIf you’ve been to

  13. Software Punk now have a FireFox extension called FFClickOnce: . It handles ClickOnce deployment in FireFox 🙂

  14. Linda says:

    In the "How do ClickOnce Shortcuts help me get ClickOnce support on FireFox?" section, Saurabh says "…, all you need to do is generate the shortcut file and publish it on your server…".

    How do I generate the shortcut file?

  15. Tim Binkley-Jones says:

    Has Microsoft considered creating a stand-alone application to handle the ClickOnce deployment?  Java provides the Java Web Start Launcher application that handles the .jnlp (application/x-java-jnlp-file) file type.

  16. .Avery Blog says:

    Automatically Updating Applications (ClickOnce vs. ClickThrough)

  17. Scott Hanselman Corillian Corporation April 7, 2006 Summary: In the belated seventh installment of the

  18. Summary: In the belated seventh installment of the "Some Assembly Required" column, Scott Hanselman extends,

  19. Sharp Suit says:

    Sometime happens your ClickOnce installer doesn’t works in Firefox. Look at the remedy tip and problem discussion on the Saurabh Pant’s blog. I’ve met with this problem too, but I’ve solved it by proper MIME type settings.