From my understanding; (fairly new to SCCM 2012, been working with SCE 2010 for a while though) the elements in play here:
The Business Scenario
Let's say you are trying to deploy "Java 8 Update xx" to end user machines in a single device collection. Why? Because Java.
The two in question:
Business Hours: This is a rotating weekly calendar which the end user is allowed to configure. I.E. end-user Mary wants all software updates and installations to occur when she leaves the office at 5:00 PM on the days she works Monday through Friday.
She will go into the Software Center console and set her Business Hours like...
- Monday 8:00 AM - 5:00 PM
- Tuesday 8:00 AM - 5:00 PM
- Wednesday 8:00 AM - 5:00 PM
- Thursday 8:00 AM - 5:00 PM
- Friday 8:00 AM - 3:30 PM (Mary likes to take off early on Fridays)
- Saturday none
- Sunday none
We will call this $BizWindow, it will evaluate to TRUE during the hours specified and FALSE when outside of the set time frame.
Maintenance Windows: This can be a Monthly, Weekly, or Daily schedule where the administrator is allowed to set a range of hours when an installation will be available to computers. These settings are configured at the Device Collection level.
- Daily FROM 4:00 PM to 8:00 PM
We will call this $MaintWindow, it will evaluate to TRUE when it is 4:00 PM - 8:00 PM every single day.
Necessary Conditions:
So for the software to begin installing on the client device, the computer needs to meet two conditions:
1.) It is not in the Business Hours
2.) It is in the Maintenance Window
I.E.
$BizWindow = FALSE && $MaintWindow = TRUE
So for the above example
Mary's computer will install Java during:
- 5:00 PM - 8:00 PM Monday - Thursday
- 4:00 PM -8:00 PM Friday (Because of Mary's slightly shorter day on Friday)
Honorable Mentions
When publishing Apps and Packages, there is a way to supersede any sort of Maintenance Window and Business Hours rules in the deployment settings. Then the software will become available/install immediately after it has been distributed to the respective DP's and the SCCM client updates the list.
Hope that helps.