The Case of the Missing Dependency
Posted by William Diaz on September 9, 2011
We recently began the deployment of an add-in for Active Directory for the IT department (Defender Console). A considerable number of workstations, however, were failing to run the installer, encountering the following error: “The following dependencies are required before some application can be installed: Microsoft Visual C++ 2008 SP1 Redistributable Package.”
All the affected workstations showed that the MS Visual C++ 2008 SP1 was installed. Upon investigating, it turned out that the Installer was looking for a latter version of the Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package, specifically ATL Security Update (you might be a bit hard pressed to find the ATL Security Update if you were just searching for the package name indicated in the error above). As a prerequisite, we could ask everyone to simply download and run this package, but with hundreds of techs spread out across dozens of offices, there were going to be some stragglers who didn’t read their emails or someone who needs to download it again a few months later and cant remember which package they need to get from where. Instead of asking everyone to install the dependency, we could work around this by just deploying the C++ 2008 ATL Update in the same location of the installer as it will look for the dependency there if it is not already present on the system, and so I placed vcredist_x86.exe in the same network folder as the new IT app:
But when I ran the installer, it failed with the same error.
Enter Process Monitor. I set a filter for the process of the installer, ran it, waited for the error and stopped the trace. I further filtered to look only for file activity and scrolled from the bottom up and quickly noticed a couple interesting file operations:
The installer is looking for file vcredist_x86.exe SP1 instead of vcredist_x86.exe. I don’t know if there ever was a vcredist_x86 SP1.exe released by Microsoft. Perhaps the developer of the application may have renamed their package to set it apart from the identically named but different version of the other vcredist_x86.exe from Microsoft here.
To work around this problem, I simply renamed vcredist_x86.exe to vcredist_x86 SP1.exe and ran the installer again. This time I saw a promising dialog box asking to install the Microsoft Visual C++ 2008 SP1 Redistributable Package before proceeding:
Upon completion of installing the dependency, I was then able to successfully start the installer and complete the installation: