Testing for "Bitness" in Configuration Manager 2012 App Deployments

Date: 30 April 2012

Updated: 01 May 2012

We started our deployment of System Center Configuration Manager 2012 last week and I ran into an interesting problem.

One of the first apps I rolled out to test with was Strawberry Perl. I grabbed the 64-bit MSI and ran through the Create Application wizard and added the MSI to the deployment types. One quick deployment later and ConfigMgr was happily installing perl on my servers.

… Most of my servers.

You see, I still have a couple of 32-bit servers hanging around and the 64-bit MSI wouldn’t install. D’oh. So, I figured it would be easy to jump into the Requirements of the distribution and limit the package to 64-bit systems. It wasn’t. While there are options for RAM amounts, CPU speed and disk space there’s nothing to test for CPU architecture.

Create Requirements

To fix this, I created a new Global Condition to test for the “bitness” of a server.

The information I’m looking for is in the AddressWidth property of the Win32_Processor class. You can see the list of properties by running gwmi Win32_Processor in powershell. If you run

gwmi -query "select * from Win32_Processor where AddressWidth = 32"

and get back a screen full of text, your system is 32 bit. If you specify the wrong value for AddressWidth, the command will exit with no output.

The condition properties should look something like this when you’re done.

bitness Properties

Once that’s done, it was a simple matter of adding the check to the deployment.

Create Requirement

Set the Value field to 64 for 64-bit systems and 32 for 32-bit systems and you’re done.

Having said all that, I’m still not sure that I haven’t missed a setting somewhere. One would think that a test to see if an app matches the target architecture would have been a no-brainer to include. If there’s a setting I missed, please let me know because not having it just doesn’t make any sense.

Update [2012-05-01 Tue 08:25]: One of my co-workers pointed out that there is, in fact, an “easier” way.

When you add a requirement, there’s an option for Operating system. In the tree view at the bottom of the pane, you can select just the 64-bit version of the OS that you’re targeting.

OS Requirements

I totally missed that before. It takes a bit more clicky-clicky to use for every 64-bit or 32-bit only package you deploy but it may be more obvious to the next admin.