Ok, so I was reading /.'s coverage of Mark Lucovsky jumping ship from MS to Google. Naturally I expected the typical anti-MS spin and of course it was there, but in the form of link to an entry on Mark's blog about Microsoft not being very good at shipping software. In this entry Mark analyzes the way Microsoft ships their software (specifically he mentions the .NET framework) vs. the way Amazon ships a fix for their software (their web site). Maybe if Mark expanded a little bit on what he believes the right answer to the problem is I could understand his angle a little better, but how you can make this comparison of shipping software to a controlled environment vs. millions of user's desktops is beyond me. That said, I did want to just talk about the .NET Framework part for a minute.
For starters, the .NET Framework is available on Windows Update. It's just an optional component to install because you don't need it to use windows. You could technically ship your application with an installer that detects that the framework is not installed and tell them to get it from Windows update, but why make the user go through all the trouble. Just slap the resdistributable merge module into your installer and ship it with your application. This is exactly the way DirectX works for example. Sure you can grab the latest from Windows update, but almost all video driver installs and/or game installs ship with the latest version so that when the user installs their new card or the latest game they can just start playing right out of the box.
So now let's consider how updates are handled for Microsoft's biggest application: Office. Office Update is there, people can check for and grab the latest updates whenever they want. The updates aren't forced, but why should they be? If people are perfectly happy with Office the way it is why would you badger your users to download megs of updates just because you refactored your code and improved speed of a certain operation by 10%?
Ultimately I believe Microsoft is getting better and better at breaking their products into smaller more manageable pieces. This is eventually going to lead to smaller, faster updates for the OS as well as applications. They are also working very hard on delivering the Smart Client technology with .NET 2.0. Using ClickOnce the install procedure can literally be the equivalent of clicking on a link and approving/denying some rights the product may require to run. For updates, each time you launch the application, or based on a schedule, it can check if there are updates and ask if the user wants to download them. Longhorn is going to ship with with all of this functionality baked right in. As a result, we should see more and more programs, both by Microsoft and third parties, start to use this functionality to perform installation and updating of products.