Home > Uncategorized, dotnet > Click Once and the Micro ISV

Click Once and the Micro ISV

August 22nd, 2008 Leave a comment Go to comments

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:

Publish

 

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]
  • Share/Bookmark
Categories: Uncategorized, dotnet Tags:
  1. August 23rd, 2008 at 20:49 | #1

    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

  2. Nick
    September 14th, 2008 at 21:17 | #2

    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.

  3. Alex Alvarez
    October 1st, 2008 at 04:45 | #3

    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.

  4. April 24th, 2009 at 23:00 | #4

    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.

  5. June 8th, 2009 at 20:37 | #5

    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.

  6. June 11th, 2009 at 13:25 | #6

    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!

  1. No trackbacks yet.