invalidptr
Posts: 79
Joined: Thu Nov 18, 2010 7:10 pm

msdia80.dll and C++ 2005 SP1 Redistributable

POS Ready 2009 (XP SP3) ships with a corrupt install of "Visual C++ 2005 SP1 Redistributable".

File: C:\Program Files\Common Files\Microsoft Shared\VC\msdia80.dll

Incorrect version: v. 8.0.50727.762
Correct version: v. 8.0.50727.4053

More details on the contents for the SP

In AI 10.0, I was looking at Requirements->Prerequisites->Pre-install->Visual C++ 2005 SP1 Redistributable (x86)->Install conditions and tried playing around with the Install Conditions -> Install prerequisite based on conditions area. I can't seem to get it to detect the bad install. I removed the existing conditions and added a File Version criteria with File to Find = [CommonFilesFolder]Microsoft Shared\VC\msdia80.dll and because it wasn't working, crazy low on the minimum require version: 8.0.728.4

Some questions:
Even if this did work, because it's the 4th octal that's different - is this bound not to work?
Is there not an option to check file size?
Eusebiu
Posts: 4959
Joined: Wed Nov 14, 2012 2:04 pm

Re: msdia80.dll and C++ 2005 SP1 Redistributable

Hi,
Even if this did work, because it's the 4th octal that's different - is this bound not to work?
Sorry, but I don't fully understand this question. Do you mean that the 4th octal is not taken into consideration by a "File Version" search? You can create a "File Version" search with the following configuration which will be true only if the "msdia80.dll" file's version is "8.0.50727.4053":
  • Search Type
    Criteria: File Version
    File to Find: [CommonFilesFolder]Microsoft Shared\VC\msdia80.dll

    Required Versions
    Minimum: 8.0.50727.4053
    Maximum: 8.0.50727.4053
In this case the prerequisite will be installed only if the "msdia80.dll" file's version is not equal with "8.0.50727.4053".
Is there not an option to check file size?
Unfortunately, we don't have predefined support for "file size" search in the Prerequisite page, "Install Conditions" tab. Although, you can create an EXE custom action with this functionality and use the "Search done by a custom executable" search type.

Best regards,
Eusebiu
Eusebiu Aria - Advanced Installer Team
Follow us: Twitter - Facebook - YouTube
invalidptr
Posts: 79
Joined: Thu Nov 18, 2010 7:10 pm

Re: msdia80.dll and C++ 2005 SP1 Redistributable

For some reason I was thinking Required Version was in reference to the file I expected to find on the users hard disk, not in relation to the file I wanted to install. Thanks.

And yes, I was wondering if this File Version test took into account the 4th octal. Which you said yes. "8.0.50727.762" and "8.0.50727.4053" will be considered different.
Eusebiu
Posts: 4959
Joined: Wed Nov 14, 2012 2:04 pm

Re: msdia80.dll and C++ 2005 SP1 Redistributable

You're welcome. Glad to help.

By the way, the "File Version" search checks the version of the file found on the user's machine and compares it with the minimum and the maximum versions set by you. If the user's file version is found between the minimum and the maximum versions that you set, then the search is true and the prerequisite will not be installed (it is assumed that a required version of the prerequisite is already installed on the user's machine).

Best regards,
Eusebiu
Eusebiu Aria - Advanced Installer Team
Follow us: Twitter - Facebook - YouTube
invalidptr
Posts: 79
Joined: Thu Nov 18, 2010 7:10 pm

Re: msdia80.dll and C++ 2005 SP1 Redistributable

The plot thickens... part of the problem was my fault. I was doing my testing in Feature-based and not Pre-installed. I was expecting it in the first dialog but it was happening later.

I have also abandoned my approach and focused on your default approach. My test was as follows:

1) Run my setup on system without C++ 2005 SP1. Note that my setup wants to install it based on the Pre-install dialog. Quit Setup.
2) Run vcredist_x86.exe from here
3) Run my setup. Note that setup does not want to install C++ 2005 SP1.

With your default approach my setup always wants to install vcredist_x86.exe in step 3 (The test in step 3 fails). This is because you can't have these two Product Versions in the search criteria, IMHO. You should have only one.

On further investigation there are 3 versions of SP1. The current version on the Microsoft website is the Visual C++ 2005 SP1 ATL Security Update version based on the GUID 837B34E3-7C30-493C-8F6A-2B0F04E2912C appearing in the registry after vcredist_x86.exe was run matches the blog. BTW, a copy of plain Visual C++ 2005 SP1 was installed on the base POS Ready 2009 based on the GUID {7299052B-02A4-4627-81F2-1818DA5D550D} appearing in the registry.

Since our product does not work with the plain Visual C++ 2005 SP1 with GUID {7299052B-02A4-4627-81F2-1818DA5D550D}, I have removed that install condition. My setup now works as intended.
Eusebiu
Posts: 4959
Joined: Wed Nov 14, 2012 2:04 pm

Re: msdia80.dll and C++ 2005 SP1 Redistributable

Hi,

I'm glad you got this working.

Best regards,
Eusebiu
Eusebiu Aria - Advanced Installer Team
Follow us: Twitter - Facebook - YouTube

Return to “Common Problems”