Apple またはソフトウェア アップデート サーバーから、特定の Mac モデル用の Boot Camp ESD (「電子ソフトウェア配布」) を取得する Windows および OS X 互換の Python スクリプト。これは、フラット パッケージ内の複数のアーカイブ層を解凍し、スクリプトが--install
オプションを使用して Windows 上で実行される場合、64 ビット MSI インストーラーも実行します。
Windows では、アーカイブは 7-Zip を使用して解凍され、7-Zip MSI がダウンロードおよびインストールされ、Brigadier がインストールした場合は後で削除されます。このツールは、Apple のWindowsSupport.dmg
ファイルからファイルの抽出を実行するために dmg2img を使用していましたが、7-Zip のより新しいバージョンには DMG のより完全なサポートが含まれているため、dmg2img はもう必要ないようです。
これは次の 2 つの理由から書かれました。
これは元々、Mac への Boot Camp 導入のイメージング後のステップとして実行するように設計されていましたが、ネットワーク接続が必要なため、ネットワーク ドライバーがシステム上ですでに利用可能である必要があります。 (以下の注意事項を参照してください)
Brigadier は、Boot Camp 5 の最近のバージョンと、今回の Boot Camp 6 のドライバー パッケージとハードウェア モデルのいくつかの組み合わせで、あまり良い結果をもたらしませんでした。Boot Camp 6 と Windows 7 全般の問題を確認している人もいます。完全に准将のせいではないかもしれない。 Boot Camp のsetup.exe
を調べてみると、この実行可能ファイルはいくつかのタスクを実行し、最終的にBootCamp.msi
を実行するための環境をセットアップしていることがわかります。これは、Brigadier が単純にmsiexec
を呼び出して、 MSI に直接連絡します。
私は Windows の内部構造について、setup.exe が実際に行うことの完全自動バージョンを実行する方法を理解できるほどの知識には程遠いです (最終的に MSI 上でmsiexec /i /qr
実行することは別として)。たとえば、この PR は、 msiexec
にさまざまな「静かな」オプションを使用することでより良い結果が得られることを示唆していますが、 setup.exe
を逆アセンブリすると、現在の master ブランチのコードと同様に、実際には/qr
が実行されていることがわかります。この種の質問は、私には答えられるほどの知識がないと感じます。
数年前にも奇妙な問題が発生しました。たとえば、単一のドライバー インストーラー (インテル チップセット関連) は、ドライバーのすべてのローカリゼーション ファイル (実行可能ではない) を順番に実行しようとするため、一連の 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
ファイルをスクリプトと同じフォルダーに配置し、内部 Software Update Server カタログを指すように .sucatalog URL をオーバーライドします (詳細は以下を参照)。
追加オプションを以下に示します。
Windows 用にコンパイル済みのバイナリはリリース エリアにあります。これは、Windows に Python がまだインストールされていない場合に役立ちます。これは PyInstaller を使用して構築されました。自分で構築する方法については、以下で詳しく説明します。
OS X または Windows の Git チェックアウトから直接実行することもできます。
いくつかのコマンドライン オプションの他に、次のようなものがあります。
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.
brigadier.plist
XML plist ファイルを作成し、スクリプトと同じディレクトリに配置することもできます。現在、1 つのキーCatalogURL
をサポートしています。これは、BootCampESD パッケージを含む内部 SUS カタログ URL を指す文字列です。このリポジトリの例を参照してください。
イメージング後の Sysprep フェーズで Boot Camp ドライバーを実行するのが一般的です。そのため、モデルや必要な Boot Camp パッケージを考慮せずに、同じイメージを異なるモデルに展開できます。 Brigadier は SysPrep FirstLogonCommand のコンテキストで動作しているようです。
このシナリオで実行するときにスクリプトによって実行される回避策が 1 つあります。通常、現在の動作はwindowssystem32
になります。 64 ビット システムでのテストでは、Windows が 32 ビット アプリケーション用にSystem32
フォルダーをSysWoW64
にフォークする方法が原因で、MSI はインストーラー コンポーネントの検索を停止しました。 --output-dir
オプションでオーバーライドせずにスクリプトがこの作業ディレクトリを検出すると、出力ディレクトリをシステムのルート、つまりディレクトリに設定します。 %SystemRoot%
。
デフォルトでは、 --install
使用すると、 --keep-files
オプションが指定されていない限り、インストール後に抽出されたファイルがクリーンアップされるため、ファイルを保持したくない場合を除き、インストール後にクリーンアップする必要はありません。 。
標準の Python スクリプトとして実行したい場合は、スクリプトを実行するために Python for Windows (これは最新の 2.7 リリースでテストされています) が必要です。
自分でビルドしたい場合は、付属のビルド スクリプトを使用できます。これには、Python と一致するバージョンの pywin32 が必要です。 PyInstaller のダウンロードを処理します。引数を指定せずに実行すると、現在の作業ディレクトリに zip ファイルが構築されます。
c:python27python build_windows_exe.py
OS X では、ドライバー ファイルを解凍するためのネイティブ hdiutil および pkgutil コマンドが用意されています。 Windows では次のことを行います。
WindowsSupport.dmg
ファイルからドライバー ファイルを抽出します。C:WindowsINF
内の「BootCamp」(または類似の) フォルダー内に配置することです。このフォルダーはデバイス ドライバーのデフォルトの検索場所であり、すべての未知のハードウェアに対して、ここにあるドライバーが自動的に検出され、インストールされます。 DevicePath
レジストリ キーを変更してカスタムの場所を追加することもできますが、既存のINF
フォルダーを使用すると、既存のイメージのドライバーを更新するためにファイルのコピー以外の変更は必要ないため、実際にイメージを復元して起動しなくても実行できます。ドライバーをインストールするだけです。 WIM イメージの場合、Windows と DISM を使用したオフライン ドライバー サービスは簡単ですが、ほとんどの管理者は WIM イメージを Mac に展開せず、ntfsprogs をラップするツールを使用している可能性があります。brigadier.plist
プライベート Web サーバーに保存されている独自のコピーによるこれらの URL の上書きをサポートする予定です。HKEY_CURRENT_USERSoftwareApple Inc.Apple Keyboard Support
にFirstTimeRun
レジストリ キーを設定して、初回起動時の Boot Camp ヘルプ ポップアップを無効にします。現時点では、この動作を無効にするオプションはありません。