Egy Windows- és OS X-kompatibilis Python szkript, amely az Apple vagy a saját szoftverfrissítési szerveréről lehozza a Boot Camp ESD-t (“Electronic Software Distribution”) egy adott Mac modellhez. Kicsomagolja a lapos csomagban lévő többrétegű archívumokat, és ha a szkriptet Windowson futtatja a --install opcióval, akkor a 64 bites MSI telepítőt is lefuttatja.

Windowson az archívumok kicsomagolása a 7-Zip segítségével történik, és a 7-Zip MSI letöltésre és telepítésre kerül, és később eltávolításra kerül, ha a Brigadier telepítette. Ez az eszköz régebben a dmg2img-et használta az Apple WindowsSupport.dmg fájljából történő kicsomagoláshoz, de a 7-Zip újabb verziói már teljesebben támogatják a DMG-ket, így úgy tűnik, a dmg2img-re már nincs szükség.

Ez két okból íródott:

  1. Mindig szeretnénk minél kevesebb Windows rendszerarculatot karbantartani, de az Apple-től általában 3-5 BootCampESD csomag áll rendelkezésre egy adott időpontban, amelyek bizonyos modellkészleteket céloznak meg. Lehetséges az Orca eszközzel szerkeszteni az MSI tulajdonságait és letiltani a modellellenőrzést, de ritkán fordul elő, hogy egyetlen telepítő tartalmazza az összes illesztőprogramot. Az Apple már most is le tudja tölteni az OS X-ben a Boot Camp Assistant segítségével a megfelelő telepítőt egy indított gépmodellhez, így nincs okunk arra, hogy Windowson belül ne tudjuk ugyanezt megtenni.
  2. Néha csak egy adott modellhez tartozó telepítő egy példányát szeretnénk letölteni és kinyerni. A manuálisan elvégzendő lépések fárasztóak, és sok van belőlük. 2013 tavaszától az Apple számos Boot Camp telepítőcsomagot tett elérhetővé a támogatás letöltési oldalán, de ezek még mindig sok különböző modellkészletre oszlanak meg, és még mindig kényelmetlen meggyőződni arról, hogy a megfelelő csomagot szereztük meg.

Eredetileg úgy tervezték, hogy a Boot Camp telepítés utáni lépésként fusson a Macekre történő Boot Camp telepítéseknél, de mivel hálózati kapcsolatot igényel, a rendszerben már rendelkezésre kell állnia egy hálózati illesztőprogramnak. (Lásd a figyelmeztetéseket alább)

Fontos (!) megjegyzés a Brigadier támogatásáról

A Brigadier a Boot Camp 5 és most a Boot Camp 6 legújabb verzióiban az illesztőprogram-csomagok és hardvermodellek bizonyos kombinációival kevésbé jó eredményeket hozott. Néhányan megerősítették a Boot Camp 6 és általában a Windows 7 problémáit, így ezek nem feltétlenül a Brigadier hibája. A Boot Camp setup.exe némi vizsgálata azt jelzi számomra, hogy ez a futtatható program több feladatot is elvégez, és beállít valamilyen környezetet a BootCamp.msi esetleges futtatásához, amit nem mindig tudunk elérni a Brigadier msiexec egyszerű meghívásával az MSI közvetlen telepítéséhez.

Nem vagyok eléggé jártas a Windows belsejében ahhoz, hogy megértsem, hogyan tudnám elvégezni a setup.exe teljes mértékben automatizált változatát annak, amit valójában csinál (a msiexec /i /qr esetleges futtatásán kívül az MSI-n). Például ez a PR azt sugallja, hogy jobb eredményeket lehet elérni a msiexec különböző “csendes” opcióinak használatával, de a setup.exe szétszerelése azt mutatja, hogy valójában /qr-t hajt végre, ahogy a jelenlegi master ágban lévő kód is. Az ilyen jellegű kérdésekre nem érzem magam eléggé képzettnek ahhoz, hogy megkíséreljem a választ.

Pár évvel ezelőtt is voltak furcsa problémák, amiket tapasztaltam. Például egyetlen driver telepítő (Intel chipkészlethez kapcsolódó), amely felugrik egy sor WinRAR SFX hiba miatt, mert megpróbálja egymás után végrehajtani a driver összes lokalizációs fájlját (amelyek nem is futtathatóak). Egyszerű kattintással ezeken a párbeszédpaneleken keresztül végül a telepítés folytatódik, de amíg ez nem történik meg, a folyamat blokkolva van. Ez a hiba nem történik meg, amikor a felhasználó manuálisan futtatja a setup.exe-t, de hogy miért, azt nem értem.

Míg fenntartok némi reményt, hogy képes leszek megoldani ezeket a problémákat, a környezetemben a dual-boot laborok felhasználási esete egyre csökken, és így nehéz igazolni a további kutatáshoz szükséges időt. Ha bárki, aki jártas a setup.exe-szerű telepítőcsomagok és MSI telepítők visszafordításában, és általában a Windows rendszeradminisztrációban, érdeklődik a Boot Camp illesztőprogramok csendes telepítésének jelenleg némileg törött támogatása iránt ebben az eszközben, örülnék egy kis segítségnek! A BootCamp.msi-ben több olyan telepítő tulajdonság is található, amely ebben a kérdésben is segítségünkre lehet.

Használat

Futtassa a brigadier-t opciók nélkül az adott modellre vonatkozó ESD letöltéséhez és kicsomagolásához az aktuális munkakönyvtárba. OS X alatt az ESD-t .dmg formátumban tartja, hogy könnyen lemezre lehessen égetni; Windows alatt az illesztőprogram-fájlokat kicsomagolja.

Futtassa a --model opcióval egy másik modell megadásához, MacPro3,1 stb. formában.

Futtassa a --install opcióval a letöltéshez és a telepítéshez is, a telepítés után törölve az illesztőprogramokat. Ez nyilvánvalóan csak Windows alatt működik. Ez az opció a Boot Camp illesztőprogramok automatikus telepítéséhez készült.

Tegyen egy brigadier.plist fájlt ugyanabba a mappába, mint a szkript, hogy a .sucatalog URL-t felülírja, és egy belső Software Update Server katalógusra mutasson (részletek alább).

Az alább látható további opciók.

Megszerzése

A kiadások között talál egy előre lefordított bináris fájlt Windowsra. Ez hasznos lehet, ha még nincs telepítve a Python Windowsra. Ez a PyInstaller segítségével készült. További részletek a saját építésről alább.

Ez közvetlenül is futtatható egy Git checkoutból OS X-en vagy Windowson.

Konfiguráció

Pár parancssori opció mellett:

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.

Elkészíthet egy brigadier.plist XML plist fájlt is, és ugyanabba a könyvtárba helyezheti, mint a szkriptet. Jelenleg egy kulcsot támogat: CatalogURL, egy karakterlánc, amely egy belső SUS katalógus URL címére mutat, amely BootCampESD csomagokat tartalmaz. Lásd a példát ebben a repóban.

Sysprep FirstLogonCommand

A Boot Camp-illesztőprogramokat gyakran a képkészítés utáni Sysprep-fázisban hajtják végre, hogy ugyanazt a képet különböző modellekre lehessen telepíteni a modell és a szükséges Boot Camp-csomag figyelembevétele nélkül. Úgy tűnik, hogy a Brigadier a SysPrep FirstLogonCommand kontextusában viselkedik.

A forgatókönyv egy olyan munkamódszert hajt végre, amelyet ebben a forgatókönyvben futtatva a szkript, ahol az aktuális munka normál esetben lenne. A 64 bites rendszeren végzett tesztjeim során az MSI megállt, amikor megpróbálta megtalálni a telepítő komponenseit, mivel a Windows a 32 bites alkalmazások esetében a System32 mappát a SysWoW64 mappába forkolja. Amikor a szkript észleli ezt a munkakönyvtárat anélkül, hogy a --output-dir opció felülírná, a kimeneti könyvtárat a rendszer gyökerére állítja, azaz %SystemRoot%\.

Alapértelmezés szerint, ha a --install opciót használjuk, a telepítés után kitakarítja a kinyert fájlokat, kivéve, ha a --keep-files opciót adjuk meg, így hacsak nem akarjuk megtartani a fájlokat, nem kell takarítani utána.

Futtatás/építés forrásból Windowson

Ha inkább standard Python szkriptként szeretné futtatni, akkor a szkript futtatásához Python for Windows-ra lesz szüksége (ezt a legújabb 2.7-es kiadással teszteltük).

Ha inkább maga szeretné elkészíteni, akkor használhatja a mellékelt build szkriptet. Ehhez Python és a pywin32 megfelelő verziója szükséges. A PyInstaller letöltését kezeli helyetted. Egyszerűen futtassa argumentumok nélkül, és egy zip fájlt készít az aktuális munkakönyvtárban:

c:\python27\python build_windows_exe.py

Kicsomagolás részletei Windowson

OS X-en a natív hdiutil és pkgutil parancsok végzik el az illesztőprogram fájlok kicsomagolásának munkáját. Windowson:

  1. Vizsgáljuk meg, hogy a 7-Zip már telepítve van-e – ha nincs, akkor töltsük le és telepítsük
  2. Kivonjuk a BootCampESD-t.pkg xar archívumot 7-Zip segítségével
  3. Kivonjuk a Payload archívumot 7-Zip segítségével, egyszer a gzip dekompresszáláshoz, és még egyszer a cpio archívum kicsomagolásához
  4. A 7-Zip segítségével kicsomagoljuk az illesztőprogram fájlokat a WindowsSupport.dmg fájlból a pkg-on belül
  5. Eltávolítsuk a 7-Zip-et, ha telepítettük

Figyelmeztetések

  • Hálózati kapcsolatot igényel, amihez tehát egy működő hálózati illesztőprogramra van szükség. Ennek legegyszerűbb módját úgy találtam, hogy a BootCampESD-kből származó különböző hálózati illesztőprogramokat egy C:\Windows\INF “BootCamp” (vagy hasonló) mappában helyezzük el egy sysprepped image-en belül C:\Windows\INF. Ez a mappa az eszközillesztők alapértelmezett keresési helye, és automatikusan fel kell ismernie és telepítenie kell az itt található illesztőprogramokat minden ismeretlen hardverhez. Módosíthatja a DevicePath rendszerleíró kulcsot is, hogy hozzáadjon egy egyéni helyet, de a meglévő INF mappa használata azt jelenti, hogy a fájlmásoláson kívül nincs szükség más módosításra egy meglévő lemezkép illesztőprogramjainak frissítéséhez, így ez elvégezhető anélkül, hogy ténylegesen visszaállítaná a lemezképet és elindítaná azt csak az illesztőprogram telepítése céljából. Az offline illesztőprogram-kiszolgálás Windows és DISM használatával egyszerű a WIM-képek esetében, de a legtöbb rendszergazda valószínűleg nem a WIM-képeket telepíti a Macekre, hanem inkább az ntfsprogs-t csomagoló eszközöket használja.
  • Ez jelenleg szinte semmilyen hibakezelést nem végez.
  • A 7-Zip egy nyilvános URL-címről tölt le, amely a szkriptben keményen kódolva van. Hamarosan a brigadier.plist támogatni fogja ezen URL-ek felülírását saját, privát webszervereken tárolt másolatokkal.
  • Telepítés után a FirstTimeRun registry kulcsot HKEY_CURRENT_USER\Software\Apple Inc.\Apple Keyboard Support-re állítja, hogy letiltsa az első indításkor felugró Boot Camp súgó ablakot, és jelenleg nincs lehetőség ennek a viselkedésnek a letiltására.
  • Kizárólag 64 bites Windowson támogatja a telepítést. Érdemes megemlíteni, hogy a 2012. decemberi Boot Camp-illesztőprogram ESD-k úgy tűnik, hogy csak 64 bitesek, így a 32 bites Windows támogatásához további munkára lenne szükség. Ha a 32 bites Windows-támogatás fontos az Ön számára, akkor ennek nyomon követésére létrehoztak egy problémát.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.