XaiJu
mattkc
mattkc

patreon


SNEAK PEEK: I backported .NET to Windows 95

The above image may seem fairly unassuming, but according to Microsoft, what you're seeing is not possible.

Most people today don't have much reason to use or deploy software for Windows 95, but a select handful do. There's a surprising amount of infrastructure that's been in place since the late 1990s/early 2000s that has simply never needed to be upgraded (after all, why fix what isn't broken?)

For our purposes, we may not have any critical twenty-year-old infrastructure in place, but we do care about software history and preservation, and every now and then it's fun to make things that allow us to step back in time but do something new.

For example, if you're someone who makes modding tools for games that support Windows 95 (couldn't be me...), it only makes sense for your modding tools to also support 95 too, so people can get your enhancements along with a fully nostalgic experience.

But making software and deploying it as far back as Windows 95 is tough in this day and age. We've been spoiled by modern IDEs, build systems, and GUI toolkits that simply didn't exist back then. To write for Windows 95 means limiting ourselves to whatever could be created back then.

...Or does it?

C#/.NET provides a much easier way to write modern apps, especially GUI apps for Windows, and has become increasingly common over the last 21 years since its release. However it never officially supported Windows 95. Even the earliest versions of .NET only supported NT 4.0 and 98SE. But those OSes are both from the same era as 95. I started to wonder, could .NET be made to work on it despite Microsoft's lack of support? Could we bring a whole new programming language and GUI toolkit - one that's still supported today in modern Visual Studio - to Windows 95?

Technically, while there are some differences between 95 and 98, there aren't that many. 98 featured some quality of life refinements, and introduced the more stable WDM driver system, but neither of those would affect .NET in any way. I felt like it had to be possible to get this working.

.NET Framework 2.0 still officially supports 98SE and can still be targeted in the latest Visual Studio 2022, so that was my target for backporting. And despite a handful of complications and complexities along the way, as you can see from the screenshot above, my hunch was right! With a few modifications, .NET can indeed run on Windows 95.

What's exciting about this is that not only will it make newer apps easier to write for 95, but that it ostensibly also backports everything else that has been written for .NET 2.0 previously. I have no idea how many apps that is - there's probably no way to know - but I think we could reasonably assume it's hundreds if not thousands. All of these should theoretically run on Windows 95 now!

This project isn't done yet, I have a few more things to patch and still need to organize my messy project folders into something worth publishing online (yes it'll all be open source), but from a mostly-working/proof-of-concept stage, C#/.NET officially works on Windows 95 now! And since .NET 2.0 Is still officially supported today, anything you write should work just as well on 95 as it will on the latest Windows 11!

I'll be going into more detail in the future about how I did this and what this all means, but since videos usually take a few weeks to put together, I thought I'd give you guys a sneak peek at what I've been working on.

Thanks to all of you for supporting me and helping me pull off stuff like this. I can't wait to see people use this in future Windows 95-targeting projects!

SNEAK PEEK: I backported .NET to Windows 95

Comments

Yo free winnt4/9x key

Patrick and Rachel

Will you share the installer for it once you're done?

Gordinator

As a fellow .NET developer myself, this is really cool!

Winksplorer

This is amazing! I can't wait to see what the community does with it!

Tom Keely

This is amazing dude, nice job.

Lunascape

Matt, *THIS IS FANTASTIC* - very nicely done.

Lucas

Possibly! I did write its underlying library (libweaver) to conform to C++98 so it could easily be used in older apps, and with a decent GUI toolkit I'd definitely be interested in seeing that functionality on 9x (maybe rolled into a revival of the .NET Rebuilder). We'll see though, my #1 priority LEGO Island-wise is the decomp, so I can't guarantee anything just yet.

MattKC

Haha no you're correct, I did indeed rewrite Rebuilder in C++/MFC for better Windows 95 support. That rewrite was completed about a year ago, but it sadly has made the codebase a lot harder to write/maintain than it used to be. The rewrite still doesn't contain the music replacement feature, and part of the reason I wrote SIEdit as a separate app was because I knew writing the UI for it in MFC would be lot harder. I'm not sure if Rebuilder will go back to .NET after this, but I could definitely see it happening.

MattKC

are you gonna port SI Edit to Win 98, as well

Max

Nicely done dude. I remember you were porting LIR to C++ due to lack of support for legacy Windows versions (or so my faulty memory leads me to believe), so I assume this serves as a middle ground. Either way, props for making this open source, this will be a godsend for some.

ottergauze


More Creators