Let me be clear; I love Microsoft's ClickOnce. I've found it to be an absolutely fantastic deployment methodology for many scenarios. It allows developers to create full featured applications and deploy them to end users with little or no pain. Essentially ClickOnce allows for a thick client application to be deployed as easily as any thin client.
The core product of the company I work for is an enterprise finance and billing suite for local governments. In 2004 we began migrating our application to .NET developing under version 1.1. We implemented the primary client layer as a WinForms applications and its initial release consisted of roughly 150 assemblies. Historically Windows client installations had always been a significant paint point for our customer's internal IT staffs and therefore for us.
During early R&D efforts for the new .NET application we were intrigued by a feature being called "no-touch deployment". By the release of .NET 2.0 this feature had been dubbed ClickOnce and as our development efforts migrated to that Framework we jumped right on board.
We never looked back.
Today all release deployments of our primary client application are handled by ClickOnce and with the exception of this .NET 3.5 SP1 defect we discovered (my search for this is documented on the MSDN forum) we've encountered no significant issues. Our client application is currently comprised of approximately three hundred assemblies and we have several hundred end users working with it on a daily basis. To say that the technology has been a success would be a wild understatement.
For a long time it's perplexed me that so little commercial software has been deployed using ClickOnce. The successes we've had proves that it's admirably capable of handling heavy traffic on rapidly changing heavily customized deployments. To put it bluntly, this shit just works. So, why haven't more people used it? Recently I considered whether this question might be related to a different ClickOnce curiosity we encountered along the way.
Sometime around 2009 our company was working on achieving Microsoft Gold Partner certification. During this process we discovered Microsoft didn't consider ClickOnce deployments as acceptable "installs" for an application. They eventually demanded we provide a more traditional Windows install process, i.e. .msi or .exe. Over the weeks in which the "installer" issue played out with Microsoft I received pressure from various sources, including my own self-doubts, to abandon ClickOnce in favor of one of the move proven Windows installers. We decided to stay with ClickOnce and easily provided Microsoft with an .msi installer for our application. Our Gold Certified Partner moved forward to completion.
I've never understood why Microsoft wouldn't consider their own ClickOnce as an accepted installer. We've been quite successfully using it in exactly that capacity for years. Recently I wondered how may other companies went down the same Microsoft certification path as us but gave up on ClickOnce as their primary deployment strategy moving instead to a more traditional format. Or, maybe people just tend to go with what they know.
Me? Well, when it comes to Windows client application deployment I'll go with ClickOnce for the win.