none
How to create a SCCM 2012 Custom Requirement for OS Architecture?

    Question

  • Hey guys,

    I'm using the application model to deploy several 32-Bit and 64-Bit apps and I’m looking to simplify things a bit. Right now I'm using the built-in requirements to specify the supported OS Architectures for my 32-Bit/64-Bit only applications. This is a bit tedious as it requires me to check every single OS type I want an application to support (i.e. for 64-Bit stuff I check Windows 7 x64, Windows 8.1 x64, Windows Server 2008 R2 x64, Windows Server R2 x64 and vice versa for 32-Bit). Really all I want is some sort of requirement that lets me specify "Install for all 64-Bit OSes" or "Install for all 32-Bit OSes" depending upon the application in question.

    I’ve been looking at some of the options for a custom requirement and I’m pretty sure I can use that piece to achieve the results I want, I just need to determine what condition I need to test against to make it work. Based on what I’ve read I’m thinking that checking the following registry key should work:

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

    KEY: PROCESSOR_ARCHITECTURE

    But I am concerned it could produce the wring result when you have a 32-Bit OS installed on a machine with a 64-Bit capable processor (I have a lot of those in my environment). I also have some older XP/2003 machines to support as well and I’m concerned that this method might not work for those systems. Has anyone here faced this same issue and come up with a solution that is relatively foolproof and (if so) would you mind sharing your solution? 

    Monday, June 30, 2014 4:25 PM

Answers

  • Create a custom global condition called "OS Architecture x64" and use it as an existential rule.  You are either x64 or are not x64 (implying x86... you'll be on the next version of ConfigMgr when 128-bit Windows comes out...).

     

    For the rule, use a WQL query to look at the architecture of the OS.

     

    Win32_OperatingSystem

    OSArchitecture = '64-bit'

     

    I hope that helps!

     

    Nash


    Nash Pherson, Senior Systems Consultant
    Now Micro - My Blog Posts
    If you found a bug or want the product to work differently, share your feedback.
    <-- If this post was helpful, please click the up arrow or propose as answer.



    • Edited by NPherson Monday, June 30, 2014 4:41 PM
    • Marked as answer by ZeusABJ Monday, June 30, 2014 5:14 PM
    Monday, June 30, 2014 4:38 PM

All replies

  • Create a custom global condition called "OS Architecture x64" and use it as an existential rule.  You are either x64 or are not x64 (implying x86... you'll be on the next version of ConfigMgr when 128-bit Windows comes out...).

     

    For the rule, use a WQL query to look at the architecture of the OS.

     

    Win32_OperatingSystem

    OSArchitecture = '64-bit'

     

    I hope that helps!

     

    Nash


    Nash Pherson, Senior Systems Consultant
    Now Micro - My Blog Posts
    If you found a bug or want the product to work differently, share your feedback.
    <-- If this post was helpful, please click the up arrow or propose as answer.



    • Edited by NPherson Monday, June 30, 2014 4:41 PM
    • Marked as answer by ZeusABJ Monday, June 30, 2014 5:14 PM
    Monday, June 30, 2014 4:38 PM
  • Creating a global condition and adding it as a requirement rule with that registry should work. I'd say try checking the above by creating a test deployment or a deployment with the Deployment purpose as available to some test system (Particularly Targeting the architecture of the machines in question). 

    Krishna Santosh Maadasu Please remember to click “Mark as Answer” on the post that helps you, and click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. This posting is provided "AS IS" with no warranties and confers no rights.

    Monday, June 30, 2014 4:41 PM
  • Create a custom global condition called "OS Architecture x64" and use it as an existential rule.  You are either x64 or are not x64 (implying x86... you'll be on the next version of ConfigMgr when 128-bit Windows comes out...).

     

    For the rule, use a WQL query to look at the architecture of the OS.

     

    Win32_OperatingSystem

    OSArchitecture = '64-bit'

     

    I hope that helps!

     

    Nash


    Nash Pherson, Senior Systems Consultant
    Now Micro - My Blog Posts
    If you found a bug or want the product to work differently, share your feedback.
    <-- If this post was helpful, please click the up arrow or propose as answer.




    See that's why I posted here. I knew somebody out there had to have come up with a good solution for this and I have to say Nash this is indeed very clever and now that you spelled it out for me also a total no-brainer. Either it is 64-Bit or it isn't! That's really all I need to know for my deployment. I was working on two conditions (a 32-Bit and a 64-bit) when (really) all I needed was one. Very very slick. I love it man, thanks for sharing!
    Monday, June 30, 2014 5:14 PM
  • Creating a global condition and adding it as a requirement rule with that registry should work. I'd say try checking the above by creating a test deployment or a deployment with the Deployment purpose as available to some test system (Particularly Targeting the architecture of the machines in question). 

    Krishna Santosh Maadasu Please remember to click “Mark as Answer” on the post that helps you, and click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. This posting is provided "AS IS" with no warranties and confers no rights.


    Thank you for your input as well Krishna! I really appreciate your taking the time to respond.
    Monday, June 30, 2014 5:15 PM
  • Thank you for explaining this shortcut.  I have a followup question.

    If you were to make this global condition for x86 instead, and have an existential rule where the deployment type only runs on x86 machines, would it be safe to say that the rule is not needed on all x64 deployment types?  

    My thinking is that when the x64 machine tries to run the x86 deployment type, it will "fail" because of the rule, then go on to the x64 deployment type which has no rule and install. 

    Monday, October 20, 2014 10:21 PM
  • Thank you for explaining this shortcut.  I have a followup question.

    If you were to make this global condition for x86 instead, and have an existential rule where the deployment type only runs on x86 machines, would it be safe to say that the rule is not needed on all x64 deployment types?  

    My thinking is that when the x64 machine tries to run the x86 deployment type, it will "fail" because of the rule, then go on to the x64 deployment type which has no rule and install. 

    If the order of deployment types goes so that x86 is evaluated first and x64 afterwards, it will work just like you described. If it's deployed to x64 OS, it will skip the first deployment type because the machine doesn't meet the requirements (of being x86) and tries the second one which will happily run because it doesn't have any requirements configured.

    Which deployment type will be run, depends on the requirements of your application. If you want to be sure that ony x64 bit apps install the x64 version, use the requirements. If you do not configure it (because now you know how this thing works), you might forget it at somepoint and start wondering "Why doesn't this work?", so I'd recommend to use the global condition on x64 also.

    Tuesday, October 21, 2014 4:07 AM
  • Thank you for the explanation.  I'll put the requirements on both architectures.
    Tuesday, October 21, 2014 4:33 PM
  • I just tried to use this in a client's SCCM environment and this information is not completely correct, at least in my experience

    I created a condition leaving the WHERE clause box at the bottom blank:

    and then used the following box on the "Create Requirement" screen to select the OS architecture (32-bit or 64-bit as required)


    Tuesday, April 5, 2016 1:19 PM
  • BenSbb - doing it as you've described will require you to type '64-bit' every time anyone uses this rule. If instead you include it in your where clause and use the global condition as an existential rule, they only need to say whether it should be x64 or not (implying x86).

    Nash Pherson, Senior Systems Consultant
    Now Micro - My Blog Posts
    If you found a bug or want the product to work differently, share your feedback.
    <-- If this post was helpful, please click the up arrow or propose as answer.

    Thursday, April 7, 2016 3:02 AM
  • Thanks a lot for this solution  ........it works very easy  and this is better for me than doing it by choosing all Operating Systems that are x64 based systems  :) 


    Hossam Wael Elmosallamy (IT Support Engineer-ECC Solutions) MCSE - CCNA hossam.wael@eccsolutions.net Mobile:(011)-49464671 www.eccsolutions.net "Experience Reliability"

    Monday, January 30, 2017 10:04 AM