When I install a game why does the installer also install DirectX, C++ libraries or .NET components that I already have?. Are these different versions or extensions? Or is is because the game installers are unable to find out what I already have installed?
-
1Altough the short answer is that they do not know what you have installed, so they try to install everything anyways. (The installer makes sure nothing newer gets overwritten.) – DJ Pirtu May 18 '16 at 14:59
-
1@DJPirtu I know what DirectX is and I have version 9 and 11, but games still want to install it – Motte001 May 18 '16 at 15:00
-
Check the answers in the linked question. I think they anwered that part as well. – DJ Pirtu May 18 '16 at 15:01
-
1The short answer: Checking if the required version of DirectX or C++ redistributables are around is way too much of a pain, when you can simply reinstall them all over again (which doesn't take that much time anyway). I haven't noticed any game installing DirectX since version 10, though. – Nolonar May 18 '16 at 15:05
-
1Not a duplicate. The OP isn't asking for the differences between versions but why installing a game tends to invoke the re-installation of apparently existing components. – May 18 '16 at 15:30
-
@Motte001 - can you provide some examples in the question. I have seen this myself on many Steam games. – May 18 '16 at 15:32
-
I voted to reopen because the other question only addresses DirectX, and ignores the .NET components. – DCShannon May 18 '16 at 15:55
-
1Yeah, this isn't really a duplicate of that linked article, which explains what DirectX is and why it's needed, and buried in a couple answers are nuggets of the answer to this question... But they aren't the same – Taegost May 18 '16 at 17:13
-
1@camelCase For example The Division. It hast 6 installation steps. The first was directx – Motte001 May 19 '16 at 14:49
1 Answers
This can be for a number of reasons, all depending on the game in question...
Version Differences
You may have insert any component installed, but the game's installer includes a different version. This is the most likely reason. For example, according to Steam there are over 40 version of DirectX 9, and many more for later versions of DirectX. See this answer which specifically addresses the reason why there are so many C++ redistributables. The version differences for such components tend to be minor patches, such as bug fixes. Also, each minor patch/version needs to be a separate installation to avoid problems such as DLL Hell.
Installer Configuration
The installer is configured to just reinstall all components each time (this ensures that the game has the correct installation). This avoids checking for existing files (quicker, less issues with false positives) and/or asking the user a bunch of setup questions (i.e. a streamlined installer UI). From my experience, Steam does this. The explanation could be to ensure that you have the correct 1 of 40 or so possible versions of the component. You are not alone if this is what you are experiencing, other people have noticed the problem too.
Additionally, from the Steam article linked above, this snippet of info may explain some scenarios:
Games which don't use the D3DX helpers (such as Source engine games) don't require running the installer on first launch as they only depend on major d3d9/10/11 versions being installed. However, games that do use D3DX must run it as it's the only way Microsoft has allowed for distributing and checking the version info on the files.
Locally Shared Libraries vs. System Libraries
The game installs the components to a different location than the usual location of system components. For example, a subdirectory for the game's installation folder. This is known as "using a shared DLL" when compiling a program for Windows (Visual C++). The game may lose out on officially patched runtimes that are installed into the standard system directories, but this approach allows a developer to have more control over the distribution of third party components. This approach also allows a developer to use a special build of a specific library. Note that for some third party components there are no "official" builds (i.e. the developer must use the source code to generate their own build via their chosen compiler).
I would say this is the most unlikely reason. If the DLLs are installed locally then it would probably be done as part of the main installation. However, I have seen this with software other than games. I'm not sure if this is still the case but some QT-based applications I have used in the past have used locally copied QT DLLs.
Installation Script Bugs
Minor installation script issues or bugs, such as the installer not having the access rights to read specific folders/registry keys. Let's not rule out actual problems in the installation script, which are subject to all kinds of operating system / access rights issues.
-
2
-
@Motte001 The usual answer to this question is because Tim lost his keys. Altough in this case the most likely answer is a spill over effect on a contested question. – DJ Pirtu May 20 '16 at 09:39
-