Click Once and the Micro ISV
Click Once is a simplified deployment technology for .Net
desktop applications from the good folks in Redmond. Although to date,
I’ve only seen it used on internal business applications, the more I
play with it, the more I suspect it could be of some interest to micro ISVs. Why?
Benefits for Vendor
- Alleviates the need for writing an installer.
- Alleviates the need for writing auto update code.
- Alleviates the need for notifying customers of minor updates.
Benefits for Customer
- No need to keep abreast of updates.
- Applications auto update, but with the option to roll back to previous versions.
Click Once is not only easy for customers, it’s also very easy to deploy for developers too. In Visual Studio, the Click Once publish dialog look like this:
Clicking ‘Publish Now’ generates all the necessary files, and sends them to either local IIS, a remote IIS server, and FTP site, or a file location.
Click Once will handle installing the most common prerequisites for you, and will also let you define update behaviour.
One thing to note – there is a common misconception that Click Once
can only be deployed from IIS hosted sites, requiring often quite
costly hosting. This isn’t correct. After a bit of digging and tweaking, I found out that you can host Click Once apps quite happily on Apache. All that is required is to add the following to your .htaccess file:
AddType application/x-ms-application application
AddType application/x-ms-manifest manifest
AddType application/octet-stream deploy
Thanks to Paul Clement for that gem.
Having said all this, there are a few caveats. If you’re releasing
.Net apps, chances are you’re going to be obfuscating them using
something like .Net Reactor.
This, unfortunately, precludes you from using Visual Studio for
deploying them. It just means that you’ve got to script is using the
Mage tool. There’s a good walkthough here.
It’s also not a substitute for InstallAware in all circumstances. If
your installer needs to do much more than private deployment to a
folder and an entry in the start menu, then you’re going to either
implement more initialisation code in your app, or revert to a full
blown installer. I think it’s fair to say the majority of .Net apps are
privately deployed, and so could benefit from Click Once.
If you’re a micro ISV writing .Net apps, have you used Click Once? What were your experiences?

![Reblog this post [with Zemanta]](archives_files/reblog_e_020.png)
Hi,
our tool (ScrumDesk) is using ClickOnce. CliskOnce is is working well until now.
But there are disadvantages (as you wrote):
- missing customization
- some complications when using obfuscation tools
- many users are downloading .application files locally and running directly from disk which will broke installation
- it is not possible to install some 3rd party products (MS SQL Server,…)
- missing before and after install custom actions
(ability to run your own code to create user license, etc.)
- problems if your customer will move shortcut from start menu or delete it
The good side:
- easy maintenance, publish new version and forget it
- very easy deployment
- quick build
The main thing that prohibits me from considering Click Once is that
it buries your installation deep in the Application Data folder, which
feels unnatural to me.
I have to say that most Windows Installer configuration software
sucks for the most part, and was truly frustrated about it. At the
beginning, I used Inno Setup (http://www.jrsoftware.org/isinfo.php), which ain’t that bad, but Advanced Installer (http://advancedinstaller.com)
did it for me. It is extremely easy to use, has decent support, it’s
very flexible, it’s under constant update, and has a good price.
I never intended on using ClickOnce for my final product, but I did
try it out just for kicks. For me though, it just had too many
limitations. And I ran into some strange errors as well. They could
have been my fault, but I didn’t bother to investigate.
What I ended up using was NSIS ( http://nsis.sourceforge.net/
). I’ve used it for projects in the past. One application in particular
has about 10,000 users now. I’ve supported it for the past 3 years and
I’ve never once heard of a problem with the installer itself. So, yeah
I’m a big-time NSIS fan.
It does take some more work initially since everything is done
through a rather low-level scripting language. But the HM NIS Edit
tool’s wizard helps a lot in getting you started. And the
user-submitted code examples help too. They even have example scripts
for automatically download & installing .NET if it’s not on the
user’s computer.
In the end, with just 34KB of overhead and lightning install speeds, NSIS is hard to beat.
In our micro ISV, we provide a download link to our application on our server. Two problems came up
1. if you download with IE 6, ClickOnce doesn’t work. The .application
file will just spew out XML on the screen and do nothing. Ptewy!
2. if you download with IE 7, the .application file still spews out
XML on the screen, but at least you can click on the popup-blocker and
click unblock to have the XML treated as an executable. :S
3. If you download with FF and click the install link, it will not
open IE to kick off the install. It opens “the default browser”, which
Microsoft ingeniously assumed was IE. Again we have the browser spewing
out XML. Ptewy!
We still don’t have an answer to this, so we put IE 7 as our minimum specification. I just hope IE 6 dies as soon as possible.
The solution to this problem is to modify your .htaccess file in Linux.
AddType application/x-ms-application application
AddType application/x-ms-manifest manifest
AddType application/octet-stream deploy
Thanks a bunch, Tim!