And the .NET updaters seem to take a lot more time than regular patches.
That's because the .NET Framework is rebuilding the "assembly cache" (recompiling the runtime library into the processor's assembly language) after an update. In a comment to a Slashdot story a few days ago, I suggested doing this rebuilding in the background, letting the user use native applications in the meantime, and marking managed applications that aren't yet ready to start with an hourglass icon. But another Slashdot user objected that letting the user run anything before the assembly cache finishes would break native applications that start a managed subprocess without user interaction.
How badly do you have to fuck up a language runtime library to make it need monthly updates?