Why do software developers frequently put all the burden onto the user?

I can't tell you how many times I've downloaded some software, expected to install it in seconds and be using it immediately, only to be harassed during the installation process to install all kinds of third-party crap:

XYZ is not installed. Do you want to install it now?

And if I answer "yes", it typically opens up some webpage where I have to figure out how to download some crap that I have no interest in. Frequently, this is related to ".NET Framework" or "Visual C++ Redistributable" something. Or it's "Python" or "Perl" or "Yasm" or something else like that.

If you are "lucky", it will at least download and install straight from the installer, but even then, it's distracting and annoying.

Even as a computer nerd and software developer, I don't get why this is necessary. Why don't they bundle whatever they need inside the actual application? Why put the burden on the user to deal with all this messy development-related stuff?

Especially when it comes to .NET and Visual C++ stuff, that's by Microsoft. Wouldn't all such "updated DLLs" be installed with Windows updates? What is the point of having compiled binaries and C++-programmed software if they still need to constantly download extra "distributables"?

I'd love to understand this, but so far, I've been unable to. Why can't the installer include anything required for the software to run, or even better: why can't they use stuff that is actually available in the OS rather than requiring separate installers?