Lorsque j'installe un jeu, pourquoi l'installateur installe-t-il également DirectX, des bibliothèques C++ ou des composants .NET que j'ai déjà?. S'agit-il de versions ou d'extensions différentes? Ou est-ce parce que les installateurs de jeux ne parviennent pas à déterminer ce que j'ai déjà installé?
Réponse
Trop de publicités?Cela peut être dû à plusieurs raisons, tout dépend du jeu en question...
Différences de versions
Vous pouvez avoir insérer n'importe quel composant installé, mais l'installeur du jeu inclut une version différente. C'est la raison la plus probable. Par exemple, selon Steam, il existe plus de 40 versions de DirectX 9, et beaucoup plus pour les versions ultérieures de DirectX. Consultez cette réponse qui aborde spécifiquement la raison pour laquelle il existe autant de redistribuables C++. Les différences de versions pour de tels composants tendent à être des correctifs mineurs, tels que des correctifs de bogues. De plus, chaque correctif/version mineur doit être une installation distincte pour éviter des problèmes tels que l'enfer des DLL.
Configuration de l'installeur
L'installeur est configuré pour réinstaller tous les composants à chaque fois (cela garantit que le jeu a la bonne installation). Cela évite de vérifier l'existence de fichiers (plus rapide, moins de problèmes de faux positifs) et/ou de poser à l'utilisateur une série de questions de configuration (c'est-à-dire une interface d'installation simplifiée). D'après mon expérience, Steam le fait. L'explication pourrait être de s'assurer que vous avez la bonne version parmi 40 possibles du composant. Vous n'êtes pas seul si c'est ce que vous rencontrez, d'autres personnes ont également remarqué le problème.
De plus, l'article de Steam lié ci-dessus, cette information pourrait expliquer certaines situations:
Les jeux qui n'utilisent pas les fonctions d'aide D3DX (comme les jeux de moteur Source) n'ont pas besoin d'exécuter l'installeur au premier lancement car ils dépendent uniquement des versions majeures de d3d9/10/11 installées. Cependant, les jeux qui utilisent D3DX doivent l'exécuter car c'est la seule façon que Microsoft a autorisée pour distribuer et vérifier les informations de version des fichiers.
Bibliothèques partagées localement vs bibliothèques système
Le jeu installe les composants dans un emplacement différent de l'emplacement habituel des composants système. Par exemple, un sous-répertoire du dossier d'installation du jeu. Cela s'appelle "utiliser une DLL partagée" lors de la compilation d'un programme pour Windows (Visual C++). Le jeu peut perdre les correctifs officiels des exécutions qui sont installées dans les répertoires système standard, mais cette approche permet à un développeur d'avoir plus de contrôle sur la distribution des composants tiers. Cette approche permet également à un développeur d'utiliser une version spéciale d'une bibliothèque spécifique. Notez que pour certains composants tiers, il n'y a pas de builds "officiels" (c'est-à-dire que le développeur doit utiliser le code source pour générer sa propre build via son compilateur choisi).
Je dirais que c'est la raison la moins probable. Si les DLL sont installées localement, cela serait probablement fait dans le cadre de l'installation principale. Cependant, j'ai vu cela avec des logiciels autres que des jeux. Je ne sais pas si c'est toujours le cas mais certaines applications basées sur QT que j'ai utilisées par le passé ont utilisé des DLL QT copiées localement.
Bugs du script d'installation
Des problèmes mineurs de scripts d'installation, tels que l'installeur n'ayant pas les droits d'accès pour lire des dossiers/clés de registre spécifiques. Ne rejetons pas les problèmes réels dans le script d'installation, qui sont sujets à toutes sortes de problèmes liés au système d'exploitation/droits d'accès.