Community Forums
Page 1 of 2 12 LastLast
Results 1 to 5 of 6

Thread: Handling Detection of Visual C++ 2015 x86 Runtime Without Checking Product

  1. #1
    Join Date
    Apr 2002
    Location
    Quakertown, PA
    Posts
    678

    Handling Detection of Visual C++ 2015 x86 Runtime Without Checking Product

    Hi all,

    I'm trying to find a better way to detect the presence of our minimum VC++ 2015 requirement without checking version specific registry information specific to its version. Currently, the requirement is checked for installation by checking a version under its Product Code registry key. The problem is that if a newer version, with a different product code is in place, my prerequisite installer will fire and fail as Microsoft doesn't allow that I guess.

    Checking for the x64 version is nice because it just deals with the actual version of the runtime installed and not specific to that versions install package.

    HKLM\Software\Microsoft\DevDiv\Servicing\14.0.

    I did find another code that would be nice to use as it is also not tied to a product code registry key...

    HKLM\Software\Microsoft\VisualStudio\14.0\VC\Runtimes... This key has x86 and/or x64 keys sub-keys, which hold versioning information. The only issue here is that the version information is not held in a single value...

    Major = 14
    Minor = 0
    Bld = 23918
    Rbld = 0.

    So I don't have a way using the prereq editor to use compound conditions.

    Is there any way I can better handle the installation of VC++ runtimes (x86) so that I don't run up against conflicts attempting to install our minimum over a more recent version.

    I know this might be confusing so fire any questions if you think you can help. I guess I could ask if there is a way to handle compound conditions in prereq editor.

    For now, we're living with this as the search criteria...

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2e085fd2-a3e4-4b39-8e10-6b8d35f55244}
    BundleVersion = 14.0.23918.0

    Using the version comparison works fine, but again its tied to that product code.

    Maybe a better approach would be to check a file version instead of dealing with installation package information. The files are probably installed to standard locations so that might be an easier thing to check. ??

    Any pointers appreciated!!
    Last edited by Superfreak3; 01-19-2017 at 02:00 PM.
    Any help is GRRRRRReatly Appreciated!

  2. #2
    Join Date
    Jan 2003
    Posts
    30
    Hello Superfreak,
    I would recommend you to make this comment in the following forum too:
    https://blogs.msdn.microsoft.com/vcb...sing-applocal/
    Please see the comment by user BAR36.

    We have the same problem.
    Regards
    André

  3. #3
    Join Date
    Jan 2003
    Posts
    30
    Hello Superfreak,
    these are prq-files which we are using for C++ VS 2015 Redistributable / x86 - without Update, with Update1, with Update2
    (I hope I can append it.)
    I have made some update / downgrade tests. It seeems to work.
    But my experience level with redistributables is low.

    Regards
    André
    Attached Files Attached Files

  4. #4
    Join Date
    Apr 2008
    Posts
    136

    Visual C++ 2015 Update 3 X86 run-time

    I have a similar issue. The machine in question has Visual C++ 2015 update 3 x64 already installed by another application. Then my install comes along and checks the registry setting you mentioned. Low and behold it finds it in
    HKLM\Software\Microsoft\DevDiv\Servicing\14.0. The only problem is that my application is 32-bit running on 64 and I need the 32-bit version of the run-time. So that registry location does not work - I think you were saying the same thing.

    So I tried looking up the GUID in the uninstall strings. Unfortunately, another machine that I tested this on had a newer version of the runtime -- but since the registry information was missing, it tried to install it even though it was not needed. This lead to a message that a newer version was already installed. Yes, it is only time lost but seriously there should be a cleaner way to check for this run-time.

  5. #5
    Join Date
    Apr 2002
    Location
    Quakertown, PA
    Posts
    678
    Quote Originally Posted by MattQVI View Post
    I have a similar issue. The machine in question has Visual C++ 2015 update 3 x64 already installed by another application. Then my install comes along and checks the registry setting you mentioned. Low and behold it finds it in
    HKLM\Software\Microsoft\DevDiv\Servicing\14.0. The only problem is that my application is 32-bit running on 64 and I need the 32-bit version of the run-time. So that registry location does not work - I think you were saying the same thing.

    So I tried looking up the GUID in the uninstall strings. Unfortunately, another machine that I tested this on had a newer version of the runtime -- but since the registry information was missing, it tried to install it even though it was not needed. This lead to a message that a newer version was already installed. Yes, it is only time lost but seriously there should be a cleaner way to check for this run-time.
    Yeah, that's a sticky situation. The x64 package writes the registry keys for both architectures. I'm not sure why. Maybe if installing x64 installed both that and x86, but that's not the case. Maybe this will help...

    https://zzz.buzz/notes/vc-redist-pac...#x86-140242151
    Any help is GRRRRRReatly Appreciated!

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •