views:

1816

answers:

2

I have a question very similar to this one but the answer does not work for me.

Software I am maintaining the setup for depends on VC++ 2008 (SP1, precisely), thus I need to find a solution to install VCRedist if not yet installed. I understand the correct way would be to build msi with merge modules, but it's not on my hands.

The answer of the duplicate question I am referring to (the accepted one) does not work for me because every tiny release (e.g. 9.0.30729.01 vs 9.0.30729.17) has proper GUIDs, which I am not able to guess or predict for future versions. Furthermore, I reckon that this would not detect Visual Studios and thus unnecessarily install the VCRedist Package when it's already on a developers machine. I do not want to bug anybody with this, certainly not somebody who has already a DevStudio installed.

Now another answer says I should look in the WinSxs-folder like $WINDIR\WinSxS\x86_Microsoft.VC80.CRT_ but this does not (yet) help me to imply SP1, or is there anything I am missing at this point ? Is there a table somewhere with the internal and "external" version numbers, so I could imply a certain minor version number ?

I cannot believe that there is nothing provided by Microsoft for this scenario, but searching the interwebs for already far too long now brings me back to good ol' SO :)

+3  A: 

You could take the recommended approach for installing directx: always run the redistributable. Since it's required and you're already shipping it there's no harm in running it even if it's already installed.

Arnshea
accepted this now. This is what I am doing now. The other lead to problems (in one of the two cases of detection) on W2K8.
lImbus
+1  A: 

looks like there is another solution proposed by a Microsoft-Developer, using MsiQueryProductState API, alas also relying on the GUIDs.

Update: The code went live yesterday and seems to be working fine. Here is what is beeing done: It is checked for the latest-known-to-me GUID AND the path² to-where-it-is-supposed-to-be-installed. If both fails, it is installed. This seems to work fine.

Additionally, it is installed with the command line arguments "/qb" which means "unattended but not invisible". See this other blog post about those params.

FWIW, GUIDs for Microsoft Visual C++ 2008 / VC90 SP1 Redistributable - x86 9.0.30729

  • 64bit 30729.17: 8220EEFE-38CD-377E-8595-13398D740ACE
  • 32bit 30729.17: 9A25302D-30C0-39D9-BD6F-21E6EC160475
  • 32bit 30729.01: 6AFCA4E1-9B78-3640-8F72-A7BF33448200

² The path: $WINDIR\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*

lImbus

related questions