Automating Apple Boot Camp support software & drivers installation

BootCamp_silent

Having cracked the PC side of our Summer imaging project thoughts then turned to Macs and upgrading our existing dual-boot systems to match the nice shiny Windows 7 image deployed elsewhere. Initially we did some brief experiments to see if ZCM could do the trick but that soon failed due to lack of PXE support on Macs (tried iPXE from CD with no success) plus the fact ZCM can’t process any sort of Mac file system. With that out the window our resident Mac expert Tristan Revell recommended sticking with the DeployStudio method we used successfully last year.

This meant we’d have to build the base image again for the Macs (not a biggie as it’s very basic) but the question arose on how to automate the Boot Camp support software and drivers, followed by the usual ZCM scripts and Bundles. As with our PC imaging process the drivers need to go on before anything else in order to get a working NIC and needs to be hardware independent.

I’d never seen the Boot Camp support software before so was pleasantly surprised that it seems to have been made with a bit of common sense (unlike some Windows-based Apple software I can think of!) and already has enough intelligence to install drivers for any Mac hardware it comes across via a single package. The only downside was no built-in silent install switch (knew it was going too well!) so I set about looking at other options.

Googling revealed that the Boot Camp software itself seems to be in MSI \ MSP format but drivers need to be extracted manually and installed by either DPInst or sysprep. That seemed far too much like hard work trawling through each Mac model and testing to make sure we didn’t miss anything so set about finding a plan B that could make use of the Apple installer.

2648060

As always our good friend AutoIT comes up trumps, quite a simple one in the end really using a mixture of the Window Info tool (AU3Info.exe) and sending the correct sequence of keystrokes to whizz through the installer. I found it needs the little delay initially to allow for the installer GUI to fully load (especially on 5400rpm HDD Mac Minis) but then picks up and does the job.

The only issue I’ve had is it doesn’t seem to grab the final OK button to restart, seems like the AutoIT program times out and closes before the install process completes but I reckon a mandatory sleep of say, 10 minutes would do the job as I’ve included in the script snippet below. Unfortunately time was against us to test this out, maybe one for later on.

The script is stored in SkyDrive and replicated below so you can take a look (note the location of the Boot Camp install files is C:\DRIVERS)

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Users\GShaw\Downloads\1369076977_10721.ico
#AutoIt3Wrapper_Res_Comment=AutoIt installer to automate dialog boxes
#AutoIt3Wrapper_Res_Description=Auto installer - Boot Camp Support Software 5.0.5033
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Created for HCFHE ILT team 2013
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Func _WinWaitActivate($title,$text,$timeout=0)
	WinWait($title,$text,$timeout)
	If Not WinActive($title,$text) Then WinActivate($title,$text)
	WinWaitActive($title,$text,$timeout)
EndFunc

Run('C:\DRIVERS\setup.exe')
Sleep (20000)
_WinWaitActivate("Boot Camp","")
Send("{ALTDOWN}n{ALTUP}{ALTDOWN}a{ALTUP}{ALTDOWN}n{ALTUP}{ALTDOWN}i{ALTUP}")
#endregion --- Au3Recorder generated code End ---

Sleep (600000)

_WinWaitActivate("Boot Camp","Boot Camp installer completed")
Send("{ALTDOWN}f{ALTUP}")

_WinWaitActivate("Boot Camp","You must restart your system for the configuration")
Send("{ALTDOWN}y{ALTUP}")

With this sorted we worked around the lack of ZCM add-on images by putting the install folder structure (Novell Client, ZCM Agent and Powershell scripts) directly on the base image as the Mac side is unlikely to change considerably in the near future. Worst case scenario we have it backed up just before running sysprep so can change it if something important needs updating.

After hitting the enter button on the sysprep command line the process just works and as part of a DeployStudio workflow sets up Mac OS X and Windows with Boot Picker to give the user a choice at each logon. Cue one happy Mac technician!

Bonus tip of the day: when sysprepping an x64 OS make sure you don’t get your unattend.xml file mixed up with an x86 one as it’ll lead to much confusion when it doesn’t work (not that we did that of course…)

Advertisements

One Response to Automating Apple Boot Camp support software & drivers installation

  1. Pingback: Solving USB3 issues on 2013/14 Macs | gshaw0

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: