One of my breakout sessions at TechEd last week was ARC304: Deploying Smart Client Architectures.
The talk covered what the options are for deploying both the client and server side artifacts in a smart client architecture, and spent most of the time discussing these things with respect to ClickOnce as a smart client technology. I covered how ClickOnce works at a high level, then dove into what is going on behind the scenes, how the manifests drive the show, what you need to put where in your server side architecturefor publishing a smart client, and then what ends up where after deployment on the client side.
One the options side, it really boils down to the following:
- ClickOnce – best choice for most .NET 2.0 and later smart client apps (or even prior using some tricks outlined in my book), but only affects deploying client side application and components that are not system wide.
- Updater Application Block – still a good option for automatic or on-demand update of client side (or even server side) components, allows a lot more flexibility in performing custom install steps during the update process, but requires more work to integrate with your application. Also does not address initial deployment in any way.
- Windows Installer (MSI) – not going anywhere. Still appropriate for heavyweight client side installs that affect system-wide settings or directories, and the primary choice for deploying server side components.
I won’t try to summarize all the ClickOnce stuff I covered, that has all been addressed in various previous blog posts on my blog as well as in my book.