CCMExec and VCRedist_x64.exe exit code 1638

CCMExec and VCRedist_x64.exe exit code 1638

Recently I discovered an error that I had not seen before with a ccmsetup.log. As long as Articulate 360 was installed it was impossible to install CCM. The software is not the main point of this entry though. This could happen with any other software as well. At least this wasn’t as bad as my last two entries Co-Management error 0x8000ffff for AAD joined devices or Migrating CCM agents to a new site – 0x8000ffff and SMSSLP. Let’s look at how I discovered the issue and how it was solved

There it is, beautiful. 1638, next to 0x8004005 the most dastly error code to exist. But if you look a line above, luckily CCM creates a log file for us.

There it is: “Cannot install a product when a newer version is installed”. I don’t think I’ve ever encountered a product, that had a more recent version of C++ Redistributable installed since the 2015-2019 versions where made into one package. So a) how do we figure out where this newer version is coming from and b) how do we solve this issue. (Also, I didn’t realize that 1638 translated to 0x666 in hex, explains a lot…)

The immediate reaction was to blame it on the recently deployed Windows Updates, however we could quickly verify that wasn’t related. Additionally, nobody else rolled out a new C++ Redistributable. Instead, the most recent installations on that computer gave us the important hint. Articulate 360 brought along Version 14.29.30038.0 – a lot more recent than the 14.28.29914 CCMSetup had. Looking at the Update-Blogs from Microsoft from version 2107 this is apparently the most recent update to the vcredist_x64.exe.

Solving the issue

This poses the question, if the more recent version is compatible with CCM, if it doesn’t let you install otherwise. The site is already at 2111 with Hotfix 1, so nothing to update to. From what we found both programs run fine with either version. In the more recent version 2203, which turned GA this Friday, a check has been added that provides a solution. “Checking ‘{65E5BD06-6392-3027-8C26-853107D3CF1A}’ version ‘14.28.29914’ expecting >= ‘14.28.29914’.” would also catch the more recent version.
If you don’t want or can’t update just yet you can however use the /skipprereq switch to install CCMsetup anyway. I would not recommend to add this to the general client push settings, as this might pose more issues than it solves. Instead, find machines with the following CMPivot query and deploy a package with that switch attached to it.

cmpivot:SW5zdGFsbGVkU29mdHdhcmUgfCB3aGVyZSBQcm9kdWN0TmFtZSBsaWtlICclTWljcm9zb2Z0IFZpc3VhbCBDKysgMjAxNS0yMDE5IFJlZGlzdHJpYnV0YWJsZSUnIHwgcHJvamVjdCBEZXZpY2UsUHJvZHVjdE5hbWUsUHJvZHVjdFZlcnNpb24gfCBvcmRlciBieSBQcm9kdWN0VmVyc2lvbg==

Please keep in mind, that this might not be the only cause. Other issues can be the cause of a 1638 error and you should always consult ccmsetup.log and client.msi.log in your installation folder.