Un script Python compatibil cu Windows și OS X care preia, de la Apple sau de la serverul dvs. de actualizare software, Boot Camp ESD („Electronic Software Distribution”) pentru un anumit model de Mac. Despachetează multiplele straturi de arhive din cadrul pachetului plat și, dacă scriptul este rulat pe Windows cu opțiunea --install, rulează și programul de instalare MSI pe 64 de biți.

Pe Windows, arhivele sunt despachetate cu ajutorul 7-Zip, iar MSI-ul 7-Zip este descărcat și instalat, și eliminat ulterior dacă Brigadier l-a instalat. Acest instrument obișnuia să utilizeze dmg2img pentru a efectua extragerea fișierelor din fișierul WindowsSupport.dmg de la Apple, dar versiunile mai recente ale 7-Zip au inclus un suport mai complet pentru DMG-uri, astfel încât dmg2img pare să nu mai fie necesar.

Acesta a fost scris din două motive:

  1. Am dori să menținem cât mai puține imagini de sistem Windows posibil, dar există de obicei 3-5 pachete BootCampESD disponibile de la Apple la un moment dat, vizând seturi specifice de modele. Este posibil să folosiți instrumentul Orca pentru a edita proprietățile MSI și a dezactiva verificarea modelului, dar sunt rare cazurile în care un singur program de instalare conține toate driverele. Apple poate deja să descarce programul de instalare corect pentru un model de mașină pornit în OS X folosind Boot Camp Assistant, așa că nu există niciun motiv pentru care să nu putem face același lucru în Windows.
  2. Câteodată dorim doar să descărcăm și să extragem o copie a programului de instalare pentru un anumit model. Pașii pentru a face acest lucru manual sunt anevoioși și sunt mulți. Începând cu primăvara anului 2013, Apple a pus la dispoziție o serie de pachete de instalare Boot Camp pe pagina lor de descărcări de asistență, dar acestea sunt încă împărțite pe mai multe seturi diferite de modele și este încă incomod să vă asigurați că aveți pachetul corect.

A fost proiectat inițial pentru a fi rulat ca etapă post-imaginare pentru implementările Boot Camp pe Mac-uri, dar, deoarece necesită conectivitate de rețea, un driver de rețea trebuie să fie deja disponibil pe sistem. (Vezi Caveats mai jos)

Notă importantă (!) privind suportul pentru Brigadier

Brigadier a produs rezultate mai puțin bune cu unele combinații de pachete de drivere și modele de hardware în versiunile recente ale Boot Camp 5, iar acum cu Boot Camp 6. Unele persoane au confirmat probleme cu Boot Camp 6 și cu Windows 7 în general, deci este posibil ca acestea să nu fie în întregime din vina lui Brigadier. O oarecare examinare a setup.exe din Boot Camp îmi indică faptul că acest executabil îndeplinește mai multe sarcini și stabilește un anumit mediu pentru eventuala execuție a BootCamp.msi, pe care nu suntem întotdeauna capabili să o obținem cu simpla invocare de către Brigadier a msiexec pentru a instala direct MSI.

Eu sunt departe de a fi suficient de bine informat cu privire la componentele interne ale Windows pentru a înțelege cum să pot realiza o versiune complet automatizată a ceea ce face de fapt setup.exe (în afară de a executa eventual msiexec /i /qr pe MSI). De exemplu, acest PR sugerează că se pot obține rezultate mai bune prin utilizarea unor opțiuni „quiet” diferite pentru msiexec, dar o dezasamblare a lui setup.exe arată că acesta execută de fapt /qr, la fel ca și codul din ramura principală actuală. Acest tip de întrebare este una la care nu cred că am suficiente cunoștințe pentru a încerca un răspuns.

Au existat probleme ciudate pe care le-am experimentat și cu câțiva ani în urmă. De exemplu, un singur instalator de driver (legat de chipset-ul Intel) care afișează o serie de erori WinRAR SFX din cauza faptului că încearcă să execute secvențial toate fișierele de localizare ale driver-ului (care nici măcar nu sunt executabile). Simplul clic pe aceste dialoguri face în cele din urmă ca instalarea să continue, dar până când acest lucru se întâmplă procesul este blocat. Această eroare nu apare atunci când un utilizator execută manual setup.exe, dar nu înțeleg de ce.

În timp ce păstrez o oarecare speranță de a putea rezolva aceste probleme, cazul de utilizare al mediului meu pentru laboratoarele dual-boot este în scădere și, prin urmare, este dificil să justific timpul necesar pentru a petrece mai mult timp cercetând aceste probleme. Dacă cineva care se pricepe la inversarea învelișurilor de instalare de tip setup.exe și a instalatorilor MSI, precum și la administrarea sistemelor Windows în general, este interesat să abordeze suportul în prezent oarecum stricat pentru instalarea silențioasă a driverelor Boot Camp în acest instrument, mi-ar plăcea să mă ajute! Există mai multe proprietăți ale programului de instalare în BootCamp.msi care ar putea fi de ajutor și în această problemă.

Utilizare

Executați brigadierul fără opțiuni pentru a descărca și despacheta ESD-ul care se aplică acestui model, în directorul de lucru curent. Pe OS X, ESD-ul este păstrat în format .dmg pentru a fi ușor de gravat pe un disc; pe Windows, fișierele driverului sunt extrase.

Executați-l cu opțiunea --model pentru a specifica un model alternativ, sub forma MacPro3,1, etc.

Executați-l cu opțiunea --install pentru a descărca și a instala, ștergând driverele după instalare. Evident, acest lucru funcționează numai pe Windows. Această opțiune a fost făcută pentru a face instalări automate ale driverelor Boot Camp.

Puneți un fișier brigadier.plist în același dosar cu scriptul pentru a suprascrie URL-ul .sucatalog pentru a indica un catalog intern Software Update Server (detalii mai jos).

Opțiuni suplimentare prezentate mai jos.

Obținerea lui

Puteți găsi un binar precompilat pentru Windows în zona de versiuni. Acest lucru poate fi util în cazul în care nu aveți deja Python instalat pe Windows. Acesta a fost construit folosind PyInstaller. Mai multe detalii despre cum să îl construiți singur mai jos.

De asemenea, poate fi rulat direct dintr-un checkout Git, atât pe OS X, cât și pe Windows.

Configurație

În afară de câteva opțiuni de linie de comandă:

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.

Puteți crea, de asemenea, un fișier brigadier.plist XML plist și îl puteți plasa în același director cu scriptul. În prezent, acesta acceptă o singură cheie: CatalogURL, un șir de caractere care indică o adresă URL internă a catalogului SUS care conține pachete BootCampESD. Consultați exemplul din acest repo.

Running as a Sysprep FirstLogonCommand

Se obișnuiește să se efectueze driverele Boot Camp în timpul unei faze Sysprep post-imagine, astfel încât să fie posibilă implementarea aceleiași imagini pe diferite modele fără a se ține cont de model și de pachetul Boot Camp necesar. Brigadierul pare să se comporte în contextul unei comenzi SysPrep FirstLogonCommand.

Există o soluție de lucru realizată de script atunci când se execută în acest scenariu, unde curentul de lucru ar fi în mod normal \windows\system32. În testele mele pe un sistem pe 64 de biți, MSI se oprea în încercarea de a localiza componentele programului de instalare, din cauza modului în care Windows își bifurcă folderul System32 în SysWoW64 pentru aplicațiile pe 32 de biți. Atunci când scriptul detectează acest director de lucru fără o opțiune --output-dir care să-l înlocuiască, acesta va seta directorul de ieșire la rădăcina sistemului, adică %SystemRoot%\.

În mod implicit, atunci când se utilizează --install, acesta va curăța fișierele extrase după instalare, cu excepția cazului în care se dă opțiunea --keep-files, astfel încât, dacă nu doriți să păstrați fișierele prin preajmă, nu ar trebui să fie nevoie să faceți curățenie după el.

Rularea/construirea din sursă pe Windows

Dacă preferați să îl rulați ca un script Python standard, veți avea nevoie de Python pentru Windows (acesta a fost testat cu cea mai recentă versiune 2.7) pentru a executa scriptul.

Dacă preferați să îl construiți singur, puteți folosi scriptul de construire inclus. Acesta necesită Python și versiunea corespunzătoare de pywin32. Acesta se ocupă de descărcarea PyInstaller pentru dumneavoastră. Pur și simplu rulați-l fără argumente și va construi un fișier zip în directorul de lucru curent:

c:\python27\python build_windows_exe.py

Detalii de despachetare pe Windows

Pe OS X, avem comenzile native hdiutil și pkgutil pentru a face munca de despachetare a fișierelor driverului. Pe Windows, noi:

  1. Verificăm dacă 7-Zip este deja instalat – dacă nu, îl descărcăm și îl instalăm
  2. Extragem BootCampESD.pkg xar archive with 7-Zip
  3. Extragem arhiva Payload cu 7-Zip, o dată pentru a decomprima gzip și din nou pentru a despacheta arhiva cpio
  4. Utilizați 7-Zip pentru a extrage fișierele driverului din fișierul WindowsSupport.dmg din cadrul pkg
  5. Dezinstalați 7-Zip dacă l-am instalat

Caveats

  • Este nevoie de o conexiune de rețea, ceea ce necesită, prin urmare, ca un driver de rețea funcțional să fie disponibil. Cea mai simplă modalitate pe care am găsit-o pentru a face acest lucru este de a plasa diferitele drivere de rețea din BootCampESDs în interiorul unui folder „BootCamp” (sau similar) în cadrul C:\Windows\INF pe o imagine sysprepped. Acest dosar este locația de căutare implicită pentru driverele de dispozitiv și ar trebui să detecteze și să instaleze automat driverele aflate aici pentru toate componentele hardware necunoscute. De asemenea, puteți modifica cheia de registru DevicePath pentru a adăuga o locație personalizată, dar utilizarea folderului existent INF înseamnă că nu sunt necesare alte modificări în afară de o copie de fișier pentru a actualiza driverele unei imagini existente, astfel încât acest lucru se poate face fără a restaura efectiv imaginea și a o porni doar pentru a instala un driver. Deservirea offline a driverelor folosind Windows și DISM este ușoară pentru imaginile WIM, dar majoritatea administratorilor probabil că nu implementează imagini WIM pe Mac-uri, ci mai degrabă folosesc instrumente care înfășoară ntfsprogs.
  • În prezent, nu efectuează aproape nici o tratare a erorilor.
  • 7-Zip-ul 7-Zip descarcă de la un URL public care este codificat în script. În curând, brigadier.plist va suporta suprascrierea acestor URL-uri cu propriile copii stocate pe un server web privat.
  • După instalare, setează cheia de registru FirstTimeRun la HKEY_CURRENT_USER\Software\Apple Inc.\Apple Keyboard Support pentru a dezactiva pop-up-ul de ajutor Boot Camp la prima lansare, iar în prezent nu există nicio opțiune pentru a dezactiva acest comportament.
  • Suportă doar instalări pe Windows pe 64 de biți. Merită menționat faptul că ESD-urile driverelor Boot Camp din decembrie 2012 par să fie numai pe 64 de biți, astfel încât ar trebui să se facă o muncă suplimentară pentru a suporta Windows pe 32 de biți. Dacă suportul pentru Windows pe 32 de biți este important pentru dumneavoastră, există o problemă creată pentru a o urmări.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.