Why we stopped using the Microsoft .NET Framework 3.5 SP1 Client Profile

Ginipic 1.2 uses the Microsoft .NET Framework 3.5 SP1. It’s mainly built with WPF, and SP1 was an important update to WPF. The problem is that .NET 3.5 SP1’s installation isn’t light, and on some scenarios it needs to download dozens of MBs before installing (not to mention installation time). To simplify this process, Microsoft released the .NET 3.5 SP1 Client Profile, which is a subset of the complete framework that only contains what most client applications need. Naturally we were thrilled with the idea of a compact .NET installation, that is light-weight and installs faster.

We initially released Ginipic with the Client Profile, but have now switched back to the full 3.5 SP1 installation. This is why:

  • The biggest problem with the Client Profile is it’s installation and more specifically with it’s progress indication. The installer’s progress is very inaccurate, it hangs for a long time at around 40% and just “plays dead”. This made some users kill the installation in the middle (because they thought it was hanging) and forget all about Ginipic. Obviously this was unacceptable and caused us to lose users. Maybe if the installation was a bit more informative and said what it was doing, this wouldn’t have happened.
  • Installation GUI – what’s up with that? Why does the Client Profile’s installation has to look so funky and weird (colors, text)? Although it can be configured through Deployment.xml, it still looks strange and scares users (“What is this profile thing that’s being installed? I just wanted to use Ginipic”). And what’s the deal with the scary PREVIEW title? Does this mean that this isn’t an official release? Is it some kind of a beta installation? Is it only a preview of the “whole” client profile? Not a very good name.
  • For some reason the Client Profile’s installation requires a reboot after completing on some machines and configurations. Oddly, on the exact same machine the full .NET 3.5 SP1 installation doesn’t require a reboot. So what, now we have to punish the users because we chose to use the Client Profile? We’ve had situations where users didn’t use Ginipic for days after installation, only because they didn’t want to restart their machine. We also tried to suppress reboot on those machines and just run Ginipic after installation completes. Yeah, that didn’t work… (Unhandled MethodNotFoudExceptions)
  • We have a dependency on System.Web. It’s not your average HttpUtility usages to encode and decode URLs (we already opened System.Web with Red Gate’s .NET Reflector, formerly Lutz Roeder’s, and copied HttpUtility out to our own util to remove the dependency) because we’re using XmlRpc (which depends on System.Web) for some of the providers, and refactoring it out was out of the question. We actually managed to solve this problem by simply including System.Web.dll, 5MB (!!!!), in our setup. This isn’t an ideal solution, but it worked.
  • The final reason that made us drop the Client Profile was its effectiveness. Since it can only be installed on machines that aren’t running any version of the .NET Framework, it’s only relevant for fresh, out-of-the-box, Win XP SP2 machines (Vista ships with .NET 3.0). Having to go through all of the above trouble only to make things easier for a small part of our users (one can debate on how small that group really is) just isn’t worth it.

So, what did we do? We switched back to the full installation. Because we wanted to reduce the amout of clicks needed throughout our installation, we used the full installation with the /passive switch, which only reports progress and doesn’t ask any questions. As with the Client Profile, this mode of the full package reports misleading and inconsistent progress, and gets us nowhere. So we finally decided to run the full package as it is, with it’s  License dialog, Progress dialog and Finish dialog. Although this requires more clicks from the user and his attention, at least he knows what’s happening, the download speed and size, and overall progress.

We really hope that this will help us save those lost-due-to-a-bad-and-long-installation users. For the future:

  • Waiting anxiously for Microsoft to release .NET 3.5 SP1 as a Windows Update (Still on for Q1 2009?).
  • Hoping that the next version of the Client Profile’s installation is more friendly and smooth.

Comments are closed.

© 2009 Ginipic Ltd.