Why do you want to redistribute system binaries?

Seriously why?

Another bucket of compatibility I keep on seeing now and then, where apps redistribute OS binaries like msvcrt.dll, mfc42.dll, setupapi.dll etc.

These dlls have dependencies on other system binaries, which are bound to change from one OS to the other causing failures in your application.

 

On thinking the probable needs for this action, these come to mind:

1.> Dependent on a specific versions of the dll.

Why? The newer OS will have a newer version. You do not need to be binary version specific. You must certainly not call any internal Apis from the dll, which can lead to unpredictable behavior of the app.

2.> Backward compatibility, for it to run on win95/98 etc.

This used to be the case way back, when there were multiple versions of msvcrt.dll floating around, and the app developer wanted to make sure his tried and tested msvcrt.dll stays with his app. But there is no need of this now. All the older binaries can do is break dependency chains now.

3.> Dependent on something, which is dependent on the old OS binary.

This needs to be fixed then! You cannot ship an app sitting on dependency structure so fragile.

 

Developers should just not redistribute OS binaries! There is no need or reason for it.