Un script Python compatible Windows et OS X qui récupère, depuis le serveur de mise à jour logicielle d'Apple ou de votre serveur, le Boot Camp ESD (« Electronic Software Distribution ») pour un modèle spécifique de Mac. Il décompresse les multiples couches d'archives dans le package plat et si le script est exécuté sous Windows avec l'option --install
, il exécute également le programme d'installation MSI 64 bits.
Sous Windows, les archives sont décompressées à l'aide de 7-Zip, et le MSI 7-Zip est téléchargé et installé, puis supprimé ultérieurement si Brigadier l'a installé. Cet outil utilisait dmg2img pour effectuer l'extraction de fichiers à partir du fichier WindowsSupport.dmg
d'Apple, mais les versions plus récentes de 7-Zip incluent une prise en charge plus complète des DMG, donc dmg2img ne semble plus être nécessaire.
Ceci a été écrit pour deux raisons :
Il a été initialement conçu pour être exécuté comme étape post-imagerie pour les déploiements Boot Camp sur Mac, mais comme il nécessite une connectivité réseau, un pilote réseau doit déjà être disponible sur le système. (Voir les mises en garde ci-dessous)
Brigadier a produit des résultats loin d'être excellents avec certaines combinaisons de packages de pilotes et de modèles matériels dans les versions récentes de Boot Camp 5, et maintenant avec Boot Camp 6. Certaines personnes ont confirmé des problèmes avec Boot Camp 6 et Windows 7 en général, donc ces ce n'est peut-être pas entièrement la faute du brigadier. Un examen du Boot Camp setup.exe
m'indique que cet exécutable effectue plusieurs tâches et configure un environnement pour l'exécution éventuelle de BootCamp.msi
, ce que nous ne sommes pas toujours en mesure d'obtenir avec la simple invocation de msiexec
par Brigadier pour installer le MSI directement.
Je suis loin d'être suffisamment informé sur les composants internes de Windows pour comprendre comment exécuter une version entièrement automatisée de tout ce que setup.exe fait réellement (en plus d'exécuter éventuellement msiexec /i /qr
sur le MSI). Par exemple, ce PR suggère que de meilleurs résultats peuvent être obtenus en utilisant différentes options "silencieuses" pour msiexec
, mais un démontage de setup.exe
montre qu'il exécute réellement /qr
, tout comme le code de la branche master actuelle. Ce genre de question est une question à laquelle je ne pense pas avoir suffisamment de connaissances pour tenter de répondre.
J'ai également rencontré des problèmes étranges il y a quelques années. Par exemple, un seul programme d'installation de pilote (lié au chipset Intel) qui affiche une série d'erreurs WinRAR SFX car il tente d'exécuter séquentiellement tous les fichiers de localisation du pilote (qui ne sont même pas exécutables). Le simple fait de cliquer sur ces boîtes de dialogue entraîne la poursuite de l'installation, mais jusqu'à ce que cela se produise, le processus est bloqué. Cette erreur ne se produit pas lorsqu'un utilisateur exécute manuellement setup.exe
, mais je ne comprends pas pourquoi.
Même si je garde un certain espoir de pouvoir résoudre ces problèmes, le cas d'utilisation de mon environnement pour les laboratoires à double démarrage diminue et il est donc difficile de justifier le temps nécessaire pour consacrer des recherches plus approfondies à ces problèmes. Si quelqu'un qui connaît l'inversion des wrappers d'installation de type setup.exe
et des installateurs MSI, ainsi que l'administration des systèmes Windows en général, souhaite s'attaquer à la prise en charge actuellement quelque peu interrompue des installations silencieuses des pilotes Boot Camp dans cet outil, je le ferais. j'adore de l'aide ! Il existe plusieurs propriétés du programme d'installation dans BootCamp.msi
qui peuvent également être utiles pour résoudre ce problème.
Exécutez Brigadier sans option pour télécharger et décompresser l'ESD qui s'applique à ce modèle, dans le répertoire de travail actuel. Sous OS X, l'ESD est conservé au format .dmg pour faciliter la gravure sur un disque ; sous Windows, les fichiers du pilote sont extraits.
Exécutez-le avec l'option --model
pour spécifier un modèle alternatif, sous la forme MacPro3,1
, etc.
Exécutez-le avec l'option --install
pour télécharger et installer, en supprimant les pilotes après l'installation. Cela ne fonctionne évidemment que sous Windows. Cette option a été conçue pour effectuer des installations automatisées des pilotes Boot Camp.
Placez un fichier brigadier.plist
dans le même dossier que le script pour remplacer l'URL .sucatalog afin de pointer vers un catalogue interne du serveur de mise à jour logicielle (détails ci-dessous).
Options supplémentaires indiquées ci-dessous.
Vous pouvez trouver un binaire précompilé pour Windows dans la zone des versions. Cela peut être utile si Python n’est pas déjà installé sur Windows. Cela a été construit à l'aide de PyInstaller. Plus de détails sur la construction vous-même ci-dessous.
Il peut également être exécuté directement à partir d’une extraction Git sous OS X ou Windows.
Outre quelques options de ligne de commande :
Usage: brigadier [options]
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.
Vous pouvez également créer un fichier plist XML brigadier.plist
et le placer dans le même répertoire que le script. Il prend actuellement en charge une clé : CatalogURL
, une chaîne qui pointe vers une URL de catalogue SUS interne contenant les packages BootCampESD. Voir l'exemple dans ce dépôt.
Il est courant d'exécuter les pilotes Boot Camp pendant une phase Sysprep post-imagerie, de sorte qu'il soit possible de déployer la même image sur différents modèles sans prendre en compte le modèle et le package Boot Camp requis. Brigadier semble se comporter dans le contexte d'un SysPrep FirstLogonCommand.
Il existe une solution de contournement effectuée par le script lors de son exécution dans ce scénario, où le fonctionnement actuel serait normalement windowssystem32
. Lors de mes tests sur un système 64 bits, MSI cesserait d'essayer de localiser ses composants d'installation, en raison de la façon dont Windows copie son dossier System32
dans SysWoW64
pour les applications 32 bits. Lorsque le script détecte ce répertoire de travail sans qu'une option --output-dir
ne le remplace, il définira le répertoire de sortie à la racine du système, c'est-à-dire. %SystemRoot%
.
Par défaut, lorsque --install
est utilisé, il nettoiera ses fichiers extraits après l'installation, à moins que l'option --keep-files
ne soit donnée, donc à moins que vous ne souhaitiez conserver les fichiers, vous ne devriez pas avoir besoin de nettoyer après. .
Si vous préférez l'exécuter en tant que script Python standard, vous aurez besoin de Python pour Windows (cela a été testé avec la dernière version 2.7) pour exécuter le script.
Si vous préférez le construire vous-même, vous pouvez utiliser le script de construction inclus. Cela nécessite Python et la version correspondante de pywin32. Il gère le téléchargement de PyInstaller pour vous. Exécutez-le simplement sans argument et il créera un fichier zip dans le répertoire de travail actuel :
c:python27python build_windows_exe.py
Sous OS X, nous disposons des commandes natives hdiutil et pkgutil pour effectuer le travail de décompression des fichiers du pilote. Sous Windows, nous :
WindowsSupport.dmg
dans le paquetC:WindowsINF
sur une image préparée par Sysprep. Ce dossier est l'emplacement de recherche par défaut des pilotes de périphérique, et il devrait automatiquement détecter et installer les pilotes situés ici pour tout matériel inconnu. Vous pouvez également modifier la clé de registre DevicePath
pour ajouter un emplacement personnalisé, mais l'utilisation du dossier INF
existant signifie qu'aucune autre modification qu'une copie de fichier n'est requise pour mettre à jour les pilotes d'une image existante, cela peut donc être fait sans restaurer l'image ni la démarrer. juste pour installer un pilote. La maintenance des pilotes hors ligne à l'aide de Windows et DISM est facile pour les images WIM, mais la plupart des administrateurs ne déploient probablement pas d'images WIM sur Mac, mais utilisent plutôt des outils qui encapsulent ntfsprogs.brigadier.plist
prendra en charge le remplacement de ces URL par vos propres copies stockées sur un serveur Web privé.FirstTimeRun
sur HKEY_CURRENT_USERSoftwareApple Inc.Apple Keyboard Support
pour désactiver la fenêtre contextuelle d'aide de Boot Camp au premier lancement, et il n'existe actuellement aucune option pour désactiver ce comportement.