How is the .NET Framework 4.5 Full Install only 50MB (since they don't have Client Profile anymore)?

(all size references are in packaged size terms, not deployed/installed sizes)

Basically, the previous .NET Framework 3.5 was a few hundred MB's in size (231.5 MB's), and the Client Profile didn't exist for 3.5, however, a Client Profile did exist for version 4.0 at only 41 MB is size, while the Full Install (not CP) for 4.0 was 48.1 MB's in size.

Now, they are saying (in link posted at end of question) that most apps tended to need classes and namespaces that were not covered in the Client Profile 4.0, so they decided to not do a Client Profile for 4.5 for that reason. The other reason they quoted was that since they were able to get the Full Install version of the .NET Framework 4.5 down to 50 MB's, that also reduced the need of creating a Client Profile version (since .NET 4.5 Full Install is only 9 MB's greater than the .NET 4.0 Client Profile), and only 1. MB's greater than the equivalent Full Install (Standalone Offline Installer).

Now, my question really just has two parts, as follows:

1). How on earth (excuse my enthusiasm) how can the 3.5 and below (3.0, 2.0) versions be several hundred MB's in size, when the 4.0 & 4.5 versions have fixed so many issues in 3.5 and below, and have added so many features since 3.5 and below, while being several times smaller in packaged size?

2). Is this the final word on the Client Profile, or may we see one for .NET 4.5 someday?

3). How can 4.5 be only 1.9 MB's greater than 4.0 while fixing so man issues, and adding so many features?

Update: (and potential 4th question to anyone willing):

@Gromer raised an interesting point, that language packs aren't included. Since their needs to be 1 language included, I'm assuming it's English and that is the default? If this is so, how is an average internet user meant to download and install language packs for their own use and language when most people don't even know/understand what a ".NET Framework" is? Am I missing something or is this not important? How often does the framework communicate to the end user in spoken language or dialog boxes?

The article where I got some of this information is below:

http://blogs.msdn.com/b/dotnet/archive/2012/10/12/improvements-in-net-framework-setup-for-developers-it-pros-and-users.aspx

Upvotes: 14

Views: 23107

Answers (4)

Luke
Luke

Reputation: 841

If you look inside a 3.5 "standalone" installer you will be stunned finding how many sub-setups are there.

Take for instance dotnetfx35_with_sp1.exe: it is a big 231MB chained installer. When you decompress it with

dotnetfx35_with_sp1.exe /x:myfolder

you get a 240Mb folder, split on several other folders:

dotNetMSP [111.2Mb] ==> x64 [45.0Mb], ia64 [36.2Mb], x86 [29.7Mb], [other] 300k 
dotNetFX20 [47.6Mb] ==> about 50/50% between 32 and 64 bit
dotNetFX30 [46.8Mb] ==> x64 [24Mb], x86 [22Mb]
dotNetFX35 [31.5Mb] ==> ia64 [12.8Mb], x64 [10.8Mb], x86 [7.7Mb]
...and some other files around...

As you know, .NET 3.5 requires .NET 3.0 and .NET 2.0, which is exactly what you see here.. Even without including language packs, they had to target a number of different platforms (from windows XP onwards) and to include a lot of patches.

Moving forward to .NET 4.x, those dependencies on previous frameworks have been dropped and, on the same time, they support fewer (and newer) operating systems and platforms (take for instance ia64 support - which was quite heavy on file size - and is now almost disappeared).

From what I see on newer setups, they also might have changed something on the internal format in which they ship the framework, probably one more efficiently compressed..

Last but not least, they changed many inner architectures, rewrote grounds-up a lot of things, which in turn probably let them remove other old things...

There is probably not a single extraordinary change that let them drop the size so much: probably all of the above and more :)

Just my 2c :)

Upvotes: 10

ZeroCool
ZeroCool

Reputation: 21

My personal opinion is that with time evolving, Microsoft integrates more and more features of the core .NET Framework directly into the Windows Operating Systems by means of Service Packs and new Windows releases.

I believe, that they redesigned the Operating System bindings in V 4.0, so the code base and the additional resources required to get .NET up and running decreases for the supported operating systems. E.g. all the XP special editions were removed from the support list between 3.5 and 4.0. In 4.5 the OS base is shrinking even more (Vista/7/Win8 and Server 2008/2013).

Also like mentioned above features like languages except english were trimmed out and some other features were extracted to the .NET SDK package.

Just my two cents.

Upvotes: 2

Robert Harvey
Robert Harvey

Reputation: 180858

Scott Hanselman puts it eloquently:

Why is that one installer so big?

That giant .NET download is for one thing - It's meant for developers or administrators who might want to redistribute a a setup that contains not just the whole of the .NET Framework, but for all possible platforms. It has installers for x86, x64 and ia64.

http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx

And:

There's been some confusion about the size of the .NET Framework. The .NET Framework is not really a 200+ meg download.

Which installer do I use? Here's the whole thing in a nutshell for Developers, ISVs, and Administrators.

  • Offline Installer - One single file that can be run offline and can install the .NET Framework any system it's run on. It's complete, all platforms, installable offline.

  • Online Installer - A 2.7 meg setup program that will detect what just the files you need, then go download between 10 and 60 megs.

This blog post goes into detail about how Microsoft made the .NET 4 framework platform installation smaller. Specifically:

We determined the subset of framework functionality that was used by 95+% of client applications and produced a first class package for this scenario. The result of this is that, unless you are taking advantage of features such as ASP.NET, you can now take a dependency on a smaller framework.

Upvotes: 4

Justin
Justin

Reputation: 86769

I can't find a source for this, but I believe the reason why the .Net framework 3.5 installer was so big is because it contained pre-JITed versions of all assemblies (including in some cases ones which won't be used as they are targetted at the incorrect platform), wheras the .Net 4.0 installer doesn't - it JITs them at install time (this is why the installation of the .Net framework v4.0 takes so long)

I also recall being told that the .Net 4.5 installation will be much quicker as rather than JITing assemblies as part of installation it will JIT them in the background while the PC is idle (however there is a process to immediately JIT assemblies that an application attempts to load, however haven't been JITed yet)

I'm struggling to find any sources for this at the moment however I'll post them when I find them.

Upvotes: 4

Related Questions