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:
- 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.
- 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:
- Vizsgáljuk meg, hogy a 7-Zip már telepítve van-e – ha nincs, akkor töltsük le és telepítsük
- Kivonjuk a BootCampESD-t.pkg xar archívumot 7-Zip segítségével
- 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
- A 7-Zip segítségével kicsomagoljuk az illesztőprogram fájlokat a
WindowsSupport.dmg
fájlból a pkg-on belül - 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ülC:\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 aDevicePath
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 kulcsotHKEY_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.