Skip to main content

Legacy Update News

Learn more about what we’re doing at the Legacy Update project.

  • Published:

Legacy Update 1.12 is a huge rewrite release. We switched from compiling with Visual C++ 2008 (and 2010, and 2017, and 2022…), a setup which Microsoft recently broke, to a streamlined open-source MinGW/GCC toolchain. The result: 1.12 is 50% smaller than 1.11, which was already below 1 MB!

I annoyed people a few too many times with the automatic restart, so Legacy Update 1.12 adds a new 3-minute countdown. This also lets you choose to restart later. A bug with it incorrectly thinking a restart is needed on Windows 10/11 (sorry!) is also fixed.

Legacy Update setup dialog says: Restarting Windows. Your computer will not be up to date until you restart it. Please save any open files, photos or documents and restart now. Setup will resume after restarting. Your computer may restart several times to complete installation. Restarting in 02:17

My never-ending quest to make every edition of Windows XP and Server 2003 identify itself correctly continues in this release. With some very specific exceptions, it should now always display the most accurate name for the OS. (Blog post still to come about the craziness behind this sometime)

Legacy Update’s System page shows that the current OS is Windows XP Tablet PC Edition 2005.

We also added a partial fix for the slowest of all updates - those for .NET Framework. Each update has to go through an extremely slow, wasteful re-optimizing process. If you use the Legacy Update website to install updates, we now use a workaround to defer the optimization until the end.

Our code signing certificate expires less than 2 weeks from now. We are looking at free/discounted options, but may need to purchase the same certificate again for $369 USD. Your support is appreciated to help us reach this goal and continue working on Legacy Update for another 2 years.

  • Published:

I set up a workaround on the server that should fix Legacy Update being blocked by some ISPs (specifically, I just set up a new subdomain and redirected all Windows Update download traffic through there).

If you’ve been running into “Windows Update may be blocked by your firewall or proxy server” or error 8024402F, try again now, it should work. If not, you may need to force Windows Update to grab an updated list of download links from our server by deleting the C:\Windows\SoftwareDistribution folder and trying again.

  • Published:

Hi everyone! I’m working on Legacy Update 1.12, where I’ve made a pretty major under-the-hood change. Now seems like a good time to release this for beta testing.

I’ve refactored the ActiveX control code to be built with the open-source MinGW compiler, rather than Microsoft’s Visual Studio 2008 (and a bit of 2010, and 2017, and 2022… you can see why I wanted to get rid of this).

Windows is heavily built around the Component Object Model. It’s a neat system where components of the OS can easily talk to each other, and third-party apps can extend the OS with new features. ActiveX is one of systems built on top of COM. With the great power of COM comes great amounts of code to interface with it. Microsoft “simplified” this for developers with Active Template Library, which generates most of the code for you through copious amounts of compiler magic. This relies on non-standard features of the Visual C++ compiler, and at any rate I was feeling paranoid about whether all the code it generates is even necessary.

So I started removing the ATL magic, and started writing that code by hand. It worked really well, and it reduced the combined size of the 32-bit and 64-bit ActiveX control dlls by 18%. Thanks to the wonders of file compression, the setup exe download is also now 24% smaller. Visual C++ 2008 (for 32-bit) and 2017 (for 64-bit) produce fairly different code, while our new streamlined MinGW toolchain is identical between both 32-bit and 64-bit (aside from the machine instructions of course), so they compress together really well.

This allowed me to better understand how ActiveX works, which made me realise there was a fair amount of dead code - a single line of ATL template magic could end up compiling thousands of lines of code that weren’t even being used. I also got the impression that a lot of what I needed to implement simply hasn’t been done with MinGW before. Perhaps the only project that does so is Wine. Hopefully I’m wrong?

Read more →

  • Published:

Hopefully most of you won’t need to worry about this, but if you’re seeing Legacy Update say it’s been blocked by your firewall, there’s some explanation of why here. We’re doing our best to get this fixed, but it’s been ongoing for 2 months now.