Um script Python compatível com Windows e OS X que busca, do servidor de atualização de software da Apple ou de seu servidor, o Boot Camp ESD ("Distribuição Eletrônica de Software") para um modelo específico de Mac. Ele descompacta as múltiplas camadas de arquivos dentro do pacote simples e se o script for executado no Windows com a opção --install
, ele também executa o instalador MSI de 64 bits.
No Windows, os arquivos são descompactados usando 7-Zip, e o 7-Zip MSI é baixado e instalado, e removido posteriormente se o Brigadier o tiver instalado. Esta ferramenta costumava usar dmg2img para realizar a extração de arquivos do arquivo WindowsSupport.dmg
da Apple, mas versões mais recentes do 7-Zip incluíram suporte mais completo para DMGs, então dmg2img parece não ser mais necessário.
Isto foi escrito por dois motivos:
Ele foi originalmente projetado para ser executado como uma etapa pós-imagem para implantações do Boot Camp em Macs, mas como requer conectividade de rede, um driver de rede já deve estar disponível no sistema. (Veja advertências abaixo)
O Brigadier produziu resultados nada bons com algumas combinações de pacotes de driver e modelos de hardware em versões recentes do Boot Camp 5 e agora com o Boot Camp 6. Algumas pessoas confirmaram problemas com o Boot Camp 6 e o Windows 7 em geral, então estes pode não ser inteiramente culpa do Brigadeiro. Alguns exames do Boot Camp setup.exe
me indicam que este executável executa várias tarefas e configura algum ambiente para a eventual execução de BootCamp.msi
, o que nem sempre conseguimos obter com a simples invocação de msiexec
do Brigadier para instalar o MSI diretamente.
Estou longe de ter conhecimento suficiente sobre os componentes internos do Windows para entender como executar uma versão totalmente automatizada de tudo o que o setup.exe realmente faz (além de eventualmente executar msiexec /i /qr
no MSI). Por exemplo, este PR sugere que melhores resultados podem ser alcançados usando diferentes opções "silenciosas" para msiexec
, mas uma desmontagem de setup.exe
mostra que ele está realmente executando /qr
, assim como o código na ramificação master atual. Esse tipo de pergunta é uma que não sinto ter conhecimento suficiente para tentar uma resposta.
Houve problemas estranhos que experimentei alguns anos atrás também. Por exemplo, um único instalador de driver (relacionado ao chipset Intel) que exibe uma série de erros WinRAR SFX devido à tentativa de executar sequencialmente todos os arquivos de localização do driver (que nem são executáveis). Basta clicar nessas caixas de diálogo para que a instalação continue, mas até que isso aconteça, o processo será bloqueado. Este erro não acontece quando um usuário executa manualmente setup.exe
, mas não entendo por que.
Embora eu mantenha alguma esperança de poder resolver esses problemas, o caso de uso do meu ambiente para laboratórios de inicialização dupla está diminuindo e, portanto, é difícil justificar o tempo necessário para gastar mais pesquisas sobre esses problemas. Se alguém que tenha conhecimento sobre como reverter wrappers de instaladores semelhantes a setup.exe
e instaladores MSI, e administração de sistemas Windows em geral, estiver interessado em lidar com o suporte atualmente um tanto quebrado para instalações silenciosas de drivers Boot Camp nesta ferramenta, eu adoro alguma ajuda! Existem várias propriedades do instalador em BootCamp.msi
que também podem ajudar com esse problema.
Execute o brigadier sem opções para baixar e descompactar o ESD que se aplica a este modelo, para o diretório de trabalho atual. No OS X, o ESD é mantido no formato .dmg para facilitar a gravação em um disco; no Windows, os arquivos do driver são extraídos.
Execute-o com a opção --model
para especificar um modelo alternativo, no formato MacPro3,1
, etc.
Execute-o com a opção --install
para baixar e instalar, excluindo os drivers após a instalação. Obviamente, isso funciona apenas no Windows. Esta opção foi feita para fazer instalações automatizadas dos drivers do Boot Camp.
Coloque um arquivo brigadier.plist
na mesma pasta do script para substituir o URL .sucatalog para apontar para um catálogo interno do Software Update Server (detalhes abaixo).
Opções adicionais mostradas abaixo.
Você pode encontrar um binário pré-compilado para Windows na área de lançamentos. Isso pode ser útil se você ainda não tiver o Python instalado no Windows. Isso foi construído usando PyInstaller. Mais detalhes sobre como construí-lo você mesmo abaixo.
Ele também pode ser executado diretamente de um checkout do Git no OS X ou no Windows.
Além de algumas opções de linha de comando:
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.
Você também pode criar um arquivo plist XML brigadier.plist
e colocá-lo no mesmo diretório do script. Atualmente, ele suporta uma chave: CatalogURL
, uma string que aponta para uma URL de catálogo interno do SUS que contém pacotes BootCampESD. Veja o exemplo neste repositório.
É comum executar os drivers do Boot Camp durante uma fase pós-imagem do Sysprep, para que seja possível implantar a mesma imagem em modelos diferentes sem levar em conta o modelo e o pacote do Boot Camp necessário. Brigadier parece se comportar no contexto de um SysPrep FirstLogonCommand.
Há uma solução alternativa executada pelo script durante a execução neste cenário, onde o funcionamento atual normalmente seria windowssystem32
. Em meus testes em um sistema de 64 bits, o MSI pararia de tentar localizar seus componentes de instalação, devido à forma como o Windows bifurca sua pasta System32
em SysWoW64
para aplicativos de 32 bits. Quando o script detecta este diretório de trabalho sem uma opção --output-dir
substituindo-o, ele definirá o diretório de saída como a raiz do sistema, ou seja. %SystemRoot%
.
Por padrão, quando --install
é usado, ele limpará seus arquivos extraídos após a instalação, a menos que a opção --keep-files
seja fornecida, então, a menos que você queira manter os arquivos por perto, você não precisará limpar depois dele .
Se preferir executá-lo como um script Python padrão, você precisará do Python para Windows (isso foi testado com a versão 2.7 mais recente) para executar o script.
Se preferir construí-lo sozinho, você pode usar o script de construção incluído. Requer Python e a versão correspondente do pywin32. Ele faz o download do PyInstaller para você. Simplesmente execute-o sem argumentos e ele criará um arquivo zip no diretório de trabalho atual:
c:python27python build_windows_exe.py
No OS X, temos os comandos nativos hdiutil e pkgutil para fazer o trabalho de descompactar os arquivos do driver. No Windows, nós:
WindowsSupport.dmg
dentro do pacoteC:WindowsINF
em uma imagem sysprepped. Esta pasta é o local de pesquisa padrão para drivers de dispositivo e deve detectar e instalar automaticamente os drivers localizados aqui para todo o hardware desconhecido. Você também pode modificar a chave de registro DevicePath
para adicionar um local personalizado, mas usar a pasta INF
existente significa que nenhuma outra alteração além de uma cópia do arquivo é necessária para atualizar os drivers de uma imagem existente, portanto, isso pode ser feito sem realmente restaurar a imagem e inicializá-la apenas para instalar um driver. A manutenção de driver offline usando Windows e DISM é fácil para imagens WIM, mas a maioria dos administradores provavelmente não está implantando imagens WIM em Macs, mas sim usando ferramentas que encapsulam ntfsprogs.brigadier.plist
suportará a substituição desses URLs por suas próprias cópias armazenadas em um servidor web privado.FirstTimeRun
em HKEY_CURRENT_USERSoftwareApple Inc.Apple Keyboard Support
para desativar o pop-up de ajuda do Boot Camp na primeira inicialização e atualmente não há opção para desativar esse comportamento.