Et Windows- og OS X-kompatibelt Python-script, der fra Apples eller din softwareopdateringsserver henter Boot Camp ESD (“Electronic Software Distribution”) for en bestemt Mac-model. Det udpakker de mange lag af arkiver i den flade pakke, og hvis scriptet køres på Windows med indstillingen --install
, kører det også 64-bit MSI-installationsprogrammet.
På Windows udpakkes arkiverne ved hjælp af 7-Zip, og 7-Zip MSI’en hentes og installeres, og fjernes senere, hvis Brigadier har installeret den. Dette værktøj plejede at bruge dmg2img til at udføre udtrækningen af filer fra Apples WindowsSupport.dmg
-fil, men nyere versioner af 7-Zip har inkluderet mere fuldstændig understøttelse af DMG’er, så dmg2img synes ikke længere at være nødvendig.
Dette blev skrevet af to grunde:
- Vi vil gerne vedligeholde så få Windows-systemaftryk som muligt, men der er typisk 3-5 BootCampESD-pakker tilgængelige fra Apple på et givet tidspunkt, der er rettet mod specifikke sæt af modeller. Det er muligt at bruge Orca-værktøjet til at redigere MSI’s egenskaber og deaktivere modelkontrollen, men der er sjældent tilfælde, hvor et enkelt installationsprogram indeholder alle drivere. Apple kan allerede hente det korrekte installationsprogram til en opstartet maskinmodel i OS X ved hjælp af Boot Camp-assistenten, så der er ingen grund til, at vi ikke kan gøre det samme i Windows.
- Sommetider ønsker vi blot at hente og udpakke en kopi af installationsprogrammet til en given model. Trinene for at gøre dette manuelt er kedelige, og der er mange af dem. Fra foråret 2013 har Apple gjort en række Boot Camp-installationspakker tilgængelige på deres side for supportdownloads, men de er stadig opdelt på mange forskellige forskellige sæt af modeller, og det er stadig besværligt at sikre sig, at man har den korrekte pakke.
Det var oprindeligt designet til at blive kørt som trin efter billedbehandling ved Boot Camp-implementeringer på Macs, men da det kræver netværksforbindelse, skal der allerede være en netværksdriver til rådighed på systemet. (Se Caveats nedenfor)
Vigtig (!) bemærkning om understøttelse af Brigadier
Brigadier har givet mindre gode resultater med nogle kombinationer af driverpakker og hardwaremodeller i nyere versioner af Boot Camp 5, og nu med Boot Camp 6. Nogle personer har bekræftet problemer med Boot Camp 6 og Windows 7 generelt, så det er måske ikke udelukkende Brigadier’s skyld. En vis undersøgelse af Boot Camp setup.exe
viser mig, at denne eksekverbare fil udfører flere opgaver og opstiller et eller andet miljø til den eventuelle udførelse af BootCamp.msi
, som vi ikke altid er i stand til at få med Brigadier’s simple påkaldelse af msiexec
for at installere MSI’en direkte.
Jeg er langt fra vidende nok om Windows-interne funktioner til at forstå, hvordan man kan udføre en fuldautomatisk version af det, som setup.exe faktisk gør (ud over eventuelt at køre msiexec /i /qr
på MSI’en). For eksempel antyder denne PR, at der kan opnås bedre resultater ved at bruge forskellige “quiet”-indstillinger til msiexec
, men en disassembling af setup.exe
viser, at den faktisk udfører /qr
, hvilket koden i den nuværende mastergren også gør. Den slags spørgsmål føler jeg ikke, at jeg har nok viden til at forsøge at svare på.
Der har også været mærkelige problemer, som jeg har oplevet for et par år siden. For eksempel et enkelt driverinstallationsprogram (Intel-chipsæt-relateret), der viser en række WinRAR SFX-fejl, fordi det forsøger at udføre alle driverens lokaliseringsfiler i rækkefølge (som ikke engang er eksekverbare). Hvis man blot klikker sig igennem disse dialogbokse, får det til sidst installationen til at fortsætte, men indtil det sker, er processen blokeret. Denne fejl opstår ikke, når en bruger manuelt kører setup.exe
, men hvorfor forstår jeg ikke.
Mens jeg bevarer et vist håb om at kunne løse disse problemer, er mit miljøs anvendelsesområde for dual-boot-laboratorier faldende, og derfor er det svært at retfærdiggøre den tid, der kræves for at bruge yderligere forskning i disse problemer. Hvis nogen, der har viden om at vende setup.exe
-lignende installer-wrappers og MSI-installatører og Windows-systemadministration i almindelighed, er interesseret i at tage fat på den i øjeblikket noget ødelagte understøttelse af lydløse installationer af Boot Camp-drivere i dette værktøj, så vil jeg meget gerne have hjælp! Der er flere installationsegenskaber i BootCamp.msi
, som også kan være til hjælp med dette problem.
Anvendelse
Kør brigadier uden indstillinger for at downloade og udpakke den ESD, der gælder for denne model, til den aktuelle arbejdskatalog. På OS X opbevares ESD’en i et .dmg-format, så den nemt kan brændes på en disk; på Windows udpakkes driverfilerne.
Kør den med --model
-indstillingen for at angive en alternativ model i form af MacPro3,1
osv.
Kør den med --install
-indstillingen for både at downloade og installere, idet driverne slettes efter installationen. Dette virker naturligvis kun på Windows. Denne indstilling blev lavet til at lave automatiserede installationer af Boot Camp-drivere.
Sæt en brigadier.plist
-fil i samme mappe som scriptet for at tilsidesætte .sucatalog-URL’en til at pege på et internt Software Update Server-katalog (detaljer nedenfor).
Der vises yderligere indstillinger nedenfor.
Hent det
Du kan finde en forkompileret binærfil til Windows i området for udgivelser. Dette kan være nyttigt, hvis du ikke allerede har Python installeret på Windows. Denne blev bygget ved hjælp af PyInstaller. Flere oplysninger om, hvordan du selv bygger det nedenfor.
Det kan også køres direkte fra en Git-checkout på enten OS X eller Windows.
Konfiguration
Udover et par kommandolinjeindstillinger:
Usage: brigadier Options: -h, --help show this help message and exit -m MODEL, --model=MODEL System model identifier to use (otherwise this machine's model is used). -i, --install After the installer is downloaded, perform the install automatically. Can be used on Windows only. -o OUTPUT_DIR, --output-dir=OUTPUT_DIR Base path where the installer files will be extracted into a folder named after the product, ie. 'BootCamp-041-1234'. Uses the current directory if this option is omitted. -k, --keep-files Keep the files that were downloaded/extracted. Useful only with the '--install' option on Windows.
Du kan også oprette en brigadier.plist
XML-plist-fil og placere den i samme mappe som scriptet. Den understøtter i øjeblikket én nøgle: CatalogURL
, en streng, der peger på en intern SUS-katalog-URL, der indeholder BootCampESD-pakker. Se eksemplet i dette repo.
Kører som en Sysprep FirstLogonCommand
Det er almindeligt at udføre Boot Camp-driverne under en Sysprep-fase efter afbildningen, så det er muligt at distribuere det samme image til forskellige modeller uden at tage hensyn til modellen og den krævede Boot Camp-pakke. Brigadier synes at opføre sig i forbindelse med en SysPrep FirstLogonCommand.
Der er en løsning, der udføres af scriptet, når det køres i dette scenarie, hvor den aktuelle arbejdsgang normalt ville være \windows\system32
. I mine tests på et 64-bit system ville MSI’en stoppe i forsøget på at finde sine installationskomponenter på grund af den måde, hvorpå Windows gafler sin System32
-mappe til SysWoW64
for 32-bit applikationer. Når scriptet registrerer denne arbejdsmappe uden en --output-dir
-indstilling, der tilsidesætter den, vil det indstille outputmappen til systemets rod, dvs. %SystemRoot%\
.
Som standard, når --install
anvendes, vil det rydde op i de uddragne filer efter installationen, medmindre --keep-files
-indstillingen er angivet, så medmindre du ønsker at beholde filerne, bør du ikke have behov for at rydde op efter det.
Kørsel/opbygning fra kildekode på Windows
Hvis du hellere vil køre det som et standard Python-script, skal du bruge Python for Windows (dette blev testet med den seneste version 2.7) for at kunne udføre scriptet.
Hvis du hellere vil bygge det selv, kan du bruge det medfølgende build-script. Det kræver Python og den tilsvarende version af pywin32. Det håndterer downloading af PyInstaller for dig. Du skal blot køre det uden argumenter, og det vil bygge en zip-fil i den aktuelle arbejdskatalog:
c:\python27\python build_windows_exe.py
Udpakningsdetaljer på Windows
På OS X har vi de native hdiutil- og pkgutil-kommandoer til at gøre arbejdet med at udpakke driverfilerne. På Windows skal vi:
- Kontrollere, om 7-Zip allerede er installeret – hvis ikke, downloader og installerer vi det
- Udpakke BootCampESD’en.pkg xar arkiv med 7-Zip
- Udtræk Payload-arkivet med 7-Zip, én gang for at dekomprimere gzip og igen for at udpakke cpio-arkivet
- Brug 7-Zip til at udpakke driverfilerne fra
WindowsSupport.dmg
-filen i pkg - Afinstaller 7-Zip, hvis vi har installeret det
Caveats
- Det kræver en netværksforbindelse, hvilket derfor kræver, at der er en fungerende netværksdriver til rådighed. Den enkleste måde, jeg har fundet at gøre dette på, er at placere de forskellige netværksdrivere fra BootCampESD’er i en “BootCamp”-mappe (eller lignende) inden for
C:\Windows\INF
på et sysprepped image. Denne mappe er standard søgeplacering for enhedsdrivere, og den bør automatisk registrere og installere drivere, der befinder sig her, for al ukendt hardware. Du kan også ændre registreringsdatabasenøglenDevicePath
for at tilføje en brugerdefineret placering, men ved at bruge den eksisterende mappeINF
er der ikke behov for andre ændringer end en filkopi for at opdatere et eksisterende afbilds drivere, så dette kan gøres uden faktisk at gendanne afbildet og starte det op bare for at installere en driver. Offline driver servicering ved hjælp af Windows og DISM er let for WIM-aftryk, men de fleste administratorer udruller sandsynligvis ikke WIM-aftryk til Macs, men bruger snarere værktøjer, der omslutter ntfsprogs. - Det udfører i øjeblikket næsten ingen fejlhåndtering.
- Den 7-Zip downloader fra en offentlig URL’er, som er hardcoded i scriptet. Snart vil
brigadier.plist
understøtte at overskrive disse URL’er med dine egne kopier gemt på en privat webserver. - Efter installationen sætter den
FirstTimeRun
-registreringsnøglen påHKEY_CURRENT_USER\Software\Apple Inc.\Apple Keyboard Support
for at deaktivere popup-vinduet med Boot Camp-hjælp ved første start, og der er i øjeblikket ingen mulighed for at deaktivere denne adfærd. - Det understøtter kun installationer på 64-bit Windows. Det er værd at nævne, at Boot Camp-driverens ESD’er fra december 2012 tilsyneladende kun er 64-bit, så der skal udføres ekstra arbejde for at understøtte 32-bit Windows. Hvis understøttelse af 32-bit Windows er vigtig for dig, er der oprettet et problem for at spore det.