Скрипт Python, совместимый с Windows и OS X, который извлекает с сервера обновлений программного обеспечения Apple или вашего программного обеспечения Boot Camp ESD («электронное распространение программного обеспечения») для конкретной модели Mac. Он распаковывает несколько слоев архивов внутри плоского пакета, а если сценарий запускается в Windows с параметром --install
, он также запускает 64-битный установщик MSI.
В Windows архивы распаковываются с помощью 7-Zip, а 7-Zip MSI загружается и устанавливается, а затем удаляется, если его установил Brigadier. Раньше этот инструмент использовал dmg2img для извлечения файлов из файла Apple WindowsSupport.dmg
, но более поздние версии 7-Zip включают более полную поддержку DMG, поэтому dmg2img, похоже, больше не нужен.
Это было написано по двум причинам:
Первоначально он был разработан для запуска в качестве этапа после создания образа для развертывания Boot Camp на компьютерах Mac, но, поскольку для этого требуется подключение к сети, сетевой драйвер должен быть уже доступен в системе. (См. предостережения ниже)
Brigadier добился не очень хороших результатов с некоторыми комбинациями пакетов драйверов и моделей оборудования в последних версиях Boot Camp 5, а теперь и в Boot Camp 6. Некоторые люди подтвердили проблемы с Boot Camp 6 и Windows 7 в целом, поэтому эти возможно, это не полностью вина бригадира. Некоторое изучение файла setup.exe
Boot Camp показывает мне, что этот исполняемый файл выполняет несколько задач и настраивает некоторую среду для возможного выполнения BootCamp.msi
, которую мы не всегда можем получить с помощью простого вызова msiexec
в Brigadier для установки MSI напрямую.
Я далеко не достаточно разбираюсь во внутреннем устройстве Windows, чтобы понять, как выполнить полностью автоматическую версию того, что на самом деле делает setup.exe (кроме того, в конечном итоге запустите msiexec /i /qr
на MSI). Например, этот PR предполагает, что лучших результатов можно достичь, используя различные «тихие» параметры msiexec
, но дизассемблирование setup.exe
показывает, что он фактически выполняет /qr
, как и код в текущей основной ветке. Мне кажется, что у меня недостаточно знаний, чтобы попытаться ответить на этот вопрос.
Пару лет назад я тоже столкнулся со странными проблемами. Например, установщик одного драйвера (связанный с набором микросхем Intel), который выдает серию ошибок WinRAR SFX из-за попытки последовательно выполнить все файлы локализации драйвера (которые даже не являются исполняемыми). Простое нажатие на эти диалоговые окна в конечном итоге приведет к продолжению установки, но до тех пор, пока это не произойдет, процесс блокируется. Эта ошибка не возникает, когда пользователь вручную запускает setup.exe
, но почему я не понимаю.
Хотя я сохраняю некоторую надежду на решение этих проблем, возможности использования в моей среде лабораторий с двойной загрузкой сужаются, и поэтому трудно оправдать время, необходимое для дальнейшего исследования этих проблем. Если кто-то, кто разбирается в реверсировании оболочек установщика, таких как setup.exe
, и установщиков MSI, а также в системном администрировании Windows в целом, заинтересован в решении проблемы несколько нарушенной в настоящее время поддержки автоматической установки драйверов Boot Camp в этом инструменте, я бы люблю помощь! В BootCamp.msi
есть несколько свойств установщика, которые также могут помочь в решении этой проблемы.
Запустите brigadier без опций, чтобы скачать и распаковать ESD, применимый к данной модели, в текущую рабочую директорию. В OS X ESD хранится в формате .dmg для удобства записи на диск; в Windows файлы драйверов извлекаются.
Запустите его с опцией --model
, чтобы указать альтернативную модель в форме MacPro3,1
и т. д.
Запустите его с параметром --install
для загрузки и установки, удалив драйверы после установки. Очевидно, это работает только в Windows. Эта опция предназначена для автоматической установки драйверов Boot Camp.
Поместите файл brigadier.plist
в ту же папку, что и сценарий, чтобы переопределить URL-адрес .sucatalog и указать на внутренний каталог сервера обновлений программного обеспечения (подробнее см. ниже).
Дополнительные опции показаны ниже.
Вы можете найти предварительно скомпилированный двоичный файл для Windows в разделе выпусков. Это может быть полезно, если у вас еще не установлен Python в Windows. Это было создано с использованием PyInstaller. Более подробная информация о том, как построить его самостоятельно, приведена ниже.
Его также можно запустить непосредственно из оформления заказа Git в OS X или Windows.
Помимо нескольких параметров командной строки:
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.
Вы также можете создать XML-файл списка brigadier.plist
и поместить его в тот же каталог, что и сценарий. В настоящее время он поддерживает один ключ: CatalogURL
— строку, указывающую на URL-адрес внутреннего каталога SUS, который содержит пакеты BootCampESD. См. пример в этом репозитории.
Обычно драйверы Boot Camp выполняются на этапе Sysprep после создания образа, чтобы можно было развернуть один и тот же образ на разных моделях, не принимая во внимание модель и необходимый пакет Boot Camp. Бригадир, похоже, ведет себя в контексте SysPrep FirstLogonCommand.
Существует один обходной путь, выполняемый сценарием при работе в этом сценарии, где текущая работа обычно будет windowssystem32
. В моих тестах на 64-битной системе MSI прекращал попытки найти компоненты установщика из-за того, что Windows разветвляет папку System32
на SysWoW64
для 32-битных приложений. Когда сценарий обнаруживает этот рабочий каталог без переопределяющей его опции --output-dir
, он устанавливает выходной каталог в корень системы, т.е. %SystemRoot%
.
По умолчанию, когда используется --install
, он очищает извлеченные файлы после установки, если не указана опция --keep-files
, поэтому, если вы не хотите сохранить файлы, вам не нужно очищать их после этого. .
Если вы предпочитаете запускать его как стандартный сценарий Python, для выполнения сценария вам понадобится Python для Windows (это было протестировано в последней версии 2.7).
Если вы предпочитаете собрать его самостоятельно, вы можете использовать прилагаемый скрипт сборки. Для этого требуется Python и соответствующая версия pywin32. Он выполнит загрузку PyInstaller за вас. Просто запустите его без аргументов, и он создаст zip-файл в текущем рабочем каталоге:
c:python27python build_windows_exe.py
В OS X у нас есть собственные команды hdiutil и pkgutil для распаковки файлов драйверов. В Windows мы:
WindowsSupport.dmg
в пакете pkg.C:WindowsINF
в образе, подготовленном с помощью программы sysprep. Эта папка является местом поиска драйверов устройств по умолчанию, и она должна автоматически обнаруживать и устанавливать расположенные здесь драйверы для всего неизвестного оборудования. Вы также можете изменить раздел реестра DevicePath
, чтобы добавить собственное местоположение, но использование существующей папки INF
означает, что для обновления драйверов существующего образа не требуется никаких других изменений, кроме копии файла, поэтому это можно сделать без фактического восстановления образа и его загрузки. просто установить драйвер. Автономное обслуживание драйверов с использованием Windows и DISM для образов WIM несложно, но большинство администраторов, скорее всего, не развертывают образы WIM на компьютерах Mac, а используют инструменты, обертывающие ntfsprogs.brigadier.plist
будет поддерживать переопределение этих URL-адресов вашими собственными копиями, хранящимися на частном веб-сервере.FirstTimeRun
в HKEY_CURRENT_USERSoftwareApple Inc.Apple Keyboard Support
чтобы отключить всплывающее окно справки при первом запуске Boot Camp, и в настоящее время нет возможности отключить это поведение.