I’ve done a few WPF projects now and have gained some good experiences with using ClickOnce as a deployment technology. ClickOnce works very well when you’re packaging and deploying through Visual Studio, but it gets very counterintuitive when trying to produce real software products. My main problem with it is that Visual Studio only builds. It’s good at building. You write code and build it. However, real software products that might be built with Visual Studio, are packaged. Packaged applications have help files and other files. Plus, modern applications are modular, meaning that modules are not necessarily statically linked with a product and need to be added to the software package during the build process. So ClickOnce/Visual Studio tend to fail when dealing with packaging software products, which is what I try to do.
To get around this problem, I took a deep look into how Visual Studio published ClickOnce applications, and stole some code from another Microsoft tool that will allow me to package software products using MSBuild and support ClickOnce delivery of my software products as well, all while only requiring a since custom MSBuild task. More...