If you’re writing applications that are used internally at your company do your managers/customers specify ease of deployment as one of the most important non-functional requirements? And as a result, in order to satisfy that requirement, do you always decide to write your app as a web application? It seems to be a common scenario, just about everything is web these days but in my opinion not all applications are best served by the browser. It’s often the case that it’s quicker and easier to write and build a rich client application (WinForms or WPF) but then you, or your network admin, is left with having to roll out the application to all the relevant users. I can remember a time when I wrote my own update checking and installation tool and the amount of effort it took and I wouldn’t want to do it again. The good news is I no longer need to thanks to ClickOnce. It’s worth taking a little time to learn how it works (it’s built right into Visual Studio). You quickly realise that your main stumbling block has just been erased.
I work in a multi-tenant enterprise environment. In other words, we have a lot of data for different customers that need to be imported into the company’s CRM system. It’s quite often the case that this data is provided to us in an Excel spreadsheet and usually in a different format to other customers. When I started they had multiple web applications that allowed the user to upload these spreadsheets into the system. Each one needing to be manipulated in some unique way. My first task when I started was to write yet another of these apps and I did, but as I became more familiar with the internal processes and what was trying to be achieved I knew that WinForms was the right choice. However, if it wasn’t for the ability to easily deploy thanks to ClickOnce then it would probably never have happened. Thankfully, it did and now we have a great little tool that’s easy to enhance, maintain, and deliver to end users. As we publish new import routines, the next time the end user runs the app they get notified of a new version which is then downloaded to their desktop and away they go. Simple.
ClickOnce has been around a long time but I’m sure it’s hardly used by most developers. I know I overlooked it for many a year. There’s nothing extra to install, it’s available right in your project. Just go to the project properties page and select the publish section. If you’ve setup a site in IIS you can publish directly to that, or you can publish to a folder on your desktop and manually copy it over to some server that will host it but either way it’s so simple I’m surprised more people don’t do it. In terms of rapid turnaround for internal enterprise applications, from scope to implementation and publishing, I don’t think the combination of a rich app with ClickOnce can be beat. It’s really enabled agile development for us with regard to this particular problem space (we have a long way to go with others) and has made it a more enjoyable experience.
The next time you have an internal application to write I’d recommend you spend a little bit of time looking it over. It might be just what you need.