Installateure sind ein Ergebnis jahrelanger Entwicklung und ein wenig (vereinfachte) Geschichte hilft zu verstehen, warum sie das tun, was sie tun.
Das Windows 3.1-Modell schlug Konfigurationsdateien im Config.ini-Stil pro Anwendung vor, wobei gemeinsam genutzte Bibliotheken in Systemordner gestützt werden, um Doppelarbeit und unnötigen Speicherplatz zu vermeiden.
Mit Windows 95 wurde die Registrierung eingeführt, die einen zentralen Speicher für die Anwendungskonfiguration ermöglicht und viele Konfigurationsdateien ersetzt. Noch wichtiger ist, dass die Windows-Konfiguration an derselben Stelle gespeichert wurde.
Die Registrierung wurde aufgebläht, weil Anwendungen nicht nach sich selbst bereinigt wurden. DLL-Hölle ist das Ergebnis von mehreren Versionen derselben gemeinsam genutzten Bibliotheken, die sich überschreiben.
.NET führte das Konzept von app.config ein (fast ini-Dateien markieren 2, diesmal mit etwas mehr Struktur, wodurch Entwickler weniger Zeit mit dem Schreiben von manuellen Parsern haben). Das GAC wurde in Version Shared Assemblys eingeführt, um DLL Hell zu verhindern.
In Windows XP und Windows Vista versuchte Microsoft, den Benutzerbereich als Speicherort für die Speicherung von Benutzerdaten und Konfigurationsdateien an einem einzigen Standardspeicherort zu definieren, um Roaming-Profile und eine einfache Migration (einfach Kopieren Ihres Profils) mit den in Programmdateien installierten Anwendungen zu ermöglichen .
Ich denke, der Grund ist, dass "Anwendungen in Fenstern so konzipiert sind, dass sie an einem Ort leben, ihre gemeinsamen Abhängigkeiten an einem anderen und die benutzerspezifischen Daten an einem anderen."
.. und das ist, bevor Sie Benutzerkonten konfigurieren, Sicherheitsberechtigungen einrichten und sicherstellen, Updates herunterladen und Windows-Dienste installieren müssen ...
xcopy ist der "einfache Fall" und sicherlich nicht für alles bestens geeignet.