I've spent a good bit of time looking at Click Once Deployment over the past few weeks. Thoughts:
- Click Once is an application deployment feature of the .NET Framework and Windows platform - it is not an IDE feature. This is an important distinction. 99% of the demos you see for Click Once take on you on 'happy path' through deploying a simple app the way the IDE pushes you to do it. Makes it feel like an IDE feature, but it's not...
- The design is really well thought out. When you dig below the simple use case you get for 'free' with VS.NET 2005 there is a fairly robust platform under the covers and that platform is exposed nicely via managed interfaces. This makes it very easy for developers to leverage Click Once to deploy their apps the way that makes most sent in their environment.
- Click Once 1.0 is CLEARLY focused at solving the problem of deploying .NET Smart Client applications to corporate desktops. You can certainly use it outside of that scenario and it will work, but that is the sweet spot for v1.0.
- Virtually no large organizations will use Click Once out of the box. All will require some level of customization to get it to work properly in their environments (see list below).
So, overall I'm very impressed with what the platform can do. It is an evolution of what MS delivered with the Application Deployment block a while back, but is a pretty big step...in the right direction.
Now, there are some problems. As I stated above, I don't see many organizations using the tool right out of the box for the following reasons:
- The user experience is totally unrealistic in a managed desktop environment. User should not be prompted when an update is available (do you want to upgrade?) and certainly should not have the option to roll an upgrade back from the Control Panel. The user experience should go something like this:
- Click the icon to launch the app
- Version of the app they should be running opens
- User starts doing value-add work
- The WORST time to upgrade a client application: when the user is trying to launch it! There are good reasons that most/all desktop updates are performed off-hours in corporate environments.
- Versioning has to be user identity based. There should be a simple way to do the following:
- Specify the version of an application that a individual user (by they domain ID...) should get
- Specify the version of an application that a group of users (by they domain group membership...) should get
- Specify the default version of an application that a user should get if there is not a version specific by ID or Group membership
So, what does this all mean? Click Once is a very cool feature that I think can save a LOT of money and enable companies to deploy Smart Client LOB apps where today they are using Web apps. It will, however, take some planning and customization to make it work properly for most/all corporate customers.