I am releasing/distributing a Windows application and service in a couple weeks.  Both application use the .NET 3.5 Framework and are wrapped up in a custom installer.  Rather than having my installer prompt the user to download the .NET 3.5 framework installer, I’m packaging it up with my setup program.  Very simply, I check to see if the framework is installed and then I silently expand and install .NET 3.5 if applicable.  Currently I am using the “online” version of the .NET 3.5 Framework installer which weighs in at 2.7 MB. The arguably unnecessary file* completely bloats my setup package but the total size is, in my opinion, within reason.

You may have noticed that .NET Framework installs have gotten unacceptably large since the 1.0 days:

  • .NET Framework 1.0 Redist: 19.7MB
  • .NET Framework 1.1 Redist: 23.1MB
  • .NET Framework 2.0 Redist: 22.4MB
  • .NET Framework 3.0 Redist: 50.3MB ( x86 )
  • .NET Framework 3.0 Redist: 90.1MB ( x64 )
  • .NET Framework 3.5 Redist: 197.0MB

With consideration for the distribution size of the .NET 3.* releases, I should be thankful for the “online” version, but I’m not.  The “online” version is still too big especially if you know the ultra-slim Microsoft .NET Framework 3.5 Client Profile (BETA) weighs in at a mere 217 KB by containing only a subset of features (Common Language Runtime, ClickOnce, Windows Forms, Windows Presentation Foundation and Windows Communication Foundation) found in the full installation of the .NET Framework. image

To add to my turmoil, I already know that both of my applications can use the bootstrapper as confirmed by selecting the “Client-only Framework subset” option within my project properties followed by a rebuild without warnings.

But, alas, the Client Profile installer is still in BETA with no published final release date other than “this summer.”  The fact that it is still in BETA isn’t a deal breaker, but the BETA version does put the end user in a less-than-optimal place when it comes to managing future .NET Framework installs.  Per the documentation:

The Microsoft .NET Framework 3.5 SP1 Client (BETA) cannot be upgraded to the full .NET Framework. Users will need to uninstall the .NET Framework 3.5 SP1 Client (BETA) before installing .NET Framework 3.5 SP1. This will be corrected with the final release of .NET Framework 3.5 SP1.

That last sentence haunts me….

Maybe I’m being overly sensitive but I don’t want my users having to uninstall .NET if they choose/need to upgrade the .NET framework.  After all, the primary reason I am packaging up the .NET installer in the first place is for the sake of user convenience (and I suspect the majority of user’s aren’t all the tech-savvy.) 

I am left weighing my options.  I can either stick with the sub par “Online” version of the installer and cause .NET Framework upgrade grief for my user’s going forward OR I can improve the install experience of my product by distributing the Client Profile installer thus causing possible future inconvenience.  Right now, I am leaning towards the former option, but I could be steered otherwise — especially if the final version of the Client Profile installer were released, let’s say, this afternoon. 

I’m torn. What would you do? 

* Side note: I would love to exclude the .NET installer and only download it to the client’s machine and install if needed, but I feel my current approach is reasonable for now. That being said, I’m sure I will be messing around with this alternative option soon.  I’m currently using Inno Setup which can seemly do anything so there’s hope.

References:

  1. .NET Framework Size - Christopher Painter
  2. .NET 3.5 Framework Distribution Size - Rick Strahl
  3. Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta - Scott Guthrie

 

kick it on DotNetKicks.com