Un script Python compatible con Windows y OS X que recupera, desde el servidor de actualización de software de Apple o de su servidor, Boot Camp ESD ("Distribución electrónica de software") para un modelo específico de Mac. Descomprime las múltiples capas de archivos dentro del paquete plano y si el script se ejecuta en Windows con la opción --install
, también ejecuta el instalador MSI de 64 bits.
En Windows, los archivos se descomprimen usando 7-Zip, y el MSI 7-Zip se descarga e instala, y se elimina más tarde si Brigadier lo instaló. Esta herramienta solía usar dmg2img para realizar la extracción de archivos del archivo WindowsSupport.dmg
de Apple, pero las versiones más recientes de 7-Zip han incluido soporte más completo para DMG, por lo que parece que dmg2img ya no es necesario.
Esto fue escrito por dos razones:
Originalmente se diseñó para ejecutarse como paso posterior a la creación de imágenes para implementaciones de Boot Camp en Mac, pero como requiere conectividad de red, ya debe haber un controlador de red disponible en el sistema. (Ver Advertencias a continuación)
Brigadier ha producido resultados no muy buenos con algunas combinaciones de paquetes de controladores y modelos de hardware en versiones recientes de Boot Camp 5, y ahora con Boot Camp 6. Algunas personas han confirmado problemas con Boot Camp 6 y Windows 7 en general, por lo que estos Puede que no sea del todo culpa del brigadier. Un examen del setup.exe
de Boot Camp me indica que este ejecutable realiza varias tareas y configura algún entorno para la eventual ejecución de BootCamp.msi
, lo cual no siempre podemos lograr con la simple invocación de msiexec
por parte de Brigadier para instalar el MSI directamente.
Estoy lejos de tener el conocimiento suficiente sobre los aspectos internos de Windows para comprender cómo poder realizar una versión completamente automatizada de lo que sea que realmente haga setup.exe (además de ejecutar msiexec /i /qr
en el MSI). Por ejemplo, este PR sugiere que se pueden lograr mejores resultados usando diferentes opciones "silenciosas" para msiexec
, pero un desensamblado de setup.exe
muestra que en realidad se está ejecutando /qr
, al igual que el código en la rama master actual. Este tipo de pregunta es una que no siento que tenga suficiente conocimiento para intentar una respuesta.
También experimenté problemas extraños hace un par de años. Por ejemplo, un instalador de un solo controlador (relacionado con el chipset Intel) que muestra una serie de errores WinRAR SFX debido a que intenta ejecutar secuencialmente todos los archivos de localización del controlador (que ni siquiera son ejecutables). Simplemente hacer clic en estos cuadros de diálogo eventualmente hace que la instalación continúe, pero hasta que eso suceda, el proceso está bloqueado. Este error no ocurre cuando un usuario ejecuta manualmente setup.exe
, pero no entiendo por qué.
Si bien mantengo cierta esperanza de poder resolver estos problemas, el caso de uso de mi entorno para laboratorios de arranque dual se está reduciendo y, por lo tanto, es difícil justificar el tiempo necesario para investigar más a fondo estos problemas. Si alguien que tenga conocimientos sobre cómo revertir los envoltorios de instaladores tipo setup.exe
y los instaladores MSI, y sobre la administración de sistemas Windows en general, está interesado en abordar el soporte actualmente algo roto para instalaciones silenciosas de controladores Boot Camp en esta herramienta, le recomendaría ¡Me encanta un poco de ayuda! Hay varias propiedades del instalador en BootCamp.msi
que también pueden ser de alguna ayuda con este problema.
Ejecute brigadier sin opciones para descargar y descomprimir el ESD que se aplica a este modelo en el directorio de trabajo actual. En OS X, el ESD se guarda en formato .dmg para grabarlo fácilmente en un disco; en Windows, se extraen los archivos del controlador.
Ejecútelo con la opción --model
para especificar un modelo alternativo, en el formato MacPro3,1
, etc.
Ejecútelo con la opción --install
para descargar e instalar, eliminando los controladores después de la instalación. Obviamente, esto sólo funciona en Windows. Esta opción se creó para realizar instalaciones automatizadas de los controladores Boot Camp.
Coloque un archivo brigadier.plist
en la misma carpeta que el script para anular la URL .sucatalog para que apunte a un catálogo interno de Software Update Server (detalles a continuación).
Opciones adicionales que se muestran a continuación.
Puede encontrar un binario precompilado para Windows en el área de lanzamientos. Esto puede resultar útil si aún no tiene Python instalado en Windows. Esto fue construido usando PyInstaller. Más detalles sobre cómo construirlo usted mismo a continuación.
También se puede ejecutar directamente desde una compra de Git en OS X o Windows.
Además de algunas opciones de línea de comandos:
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.
También puede crear un archivo plist XML brigadier.plist
y colocarlo en el mismo directorio que el script. Actualmente admite una clave: CatalogURL
, una cadena que apunta a una URL del catálogo SUS interno que contiene paquetes BootCampESD. Vea el ejemplo en este repositorio.
Es común ejecutar los controladores Boot Camp durante una fase de Sysprep posterior a la creación de imágenes, de modo que sea posible implementar la misma imagen en diferentes modelos sin tener en cuenta el modelo y el paquete Boot Camp requerido. Brigadier parece comportarse en el contexto de SysPrep FirstLogonCommand.
Hay una solución alternativa que realiza el script cuando se ejecuta en este escenario, donde el funcionamiento actual normalmente sería windowssystem32
. En mis pruebas en un sistema de 64 bits, el MSI dejaría de intentar localizar los componentes de su instalador, debido a la forma en que Windows bifurca su carpeta System32
en SysWoW64
para aplicaciones de 32 bits. Cuando el script detecta este directorio de trabajo sin una opción --output-dir
que lo anule, establecerá el directorio de salida en la raíz del sistema, es decir. %SystemRoot%
.
De forma predeterminada, cuando se usa --install
, limpiará sus archivos extraídos después de la instalación, a menos que se proporcione la opción --keep-files
, por lo que, a menos que desee conservar los archivos, no debería necesitar limpiar después. .
Si prefiere ejecutarlo como un script Python estándar, necesitará Python para Windows (esto se probó con la última versión 2.7) para poder ejecutar el script.
Si prefiere compilarlo usted mismo, puede utilizar el script de compilación incluido. Requiere Python y la versión correspondiente de pywin32. Se encarga de descargar PyInstaller por usted. Simplemente ejecútelo sin argumentos y creará un archivo zip en el directorio de trabajo actual:
c:python27python build_windows_exe.py
En OS X, tenemos los comandos nativos hdiutil y pkgutil para realizar el trabajo de descomprimir los archivos del controlador. En Windows, nosotros:
WindowsSupport.dmg
dentro del paqueteC:WindowsINF
en una imagen preparada con el sistema. Esta carpeta es la ubicación de búsqueda predeterminada para controladores de dispositivos y debería detectar e instalar automáticamente los controladores ubicados aquí para todo el hardware desconocido. También puede modificar la clave de registro DevicePath
para agregar una ubicación personalizada, pero usar la carpeta INF
existente significa que no se requieren otros cambios además de una copia del archivo para actualizar los controladores de una imagen existente, por lo que esto se puede hacer sin restaurar la imagen ni iniciarla. solo para instalar un controlador. El servicio de controladores sin conexión usando Windows y DISM es fácil para las imágenes WIM, pero la mayoría de los administradores probablemente no implementen imágenes WIM en Mac, sino que utilicen herramientas que empaquetan ntfsprogs.brigadier.plist
admitirá la anulación de estas URL con sus propias copias almacenadas en un servidor web privado.FirstTimeRun
en HKEY_CURRENT_USERSoftwareApple Inc.Apple Keyboard Support
para deshabilitar la ventana emergente de ayuda de Boot Camp al iniciarse por primera vez, y actualmente no hay ninguna opción para deshabilitar este comportamiento.