VirtualBox を使用するときによく使うアドオン VirtualBox Extension Pack ですが、このアドオンの追加インストール面倒じゃないですか?
また、バージョンアップ時によく忘れていたりしませんか?
EULA は毎回同意していますので、これもコマンドラインからまとめてインストールさせてほしいものです。
実は VBoxManage コマンドに Extension Pack をインストールするコマンドがあります。
今回はこれを利用してコマンドからインストール&アップデートを行います。
前提条件
ざっくり2つです。
1. VirtualBox がインストール済みである
これは Scoop なり、Chocolatey なり、winget なりでコマンドラインからインストールしましょう。
おすすめは Scoop でのインストールです。
scoop add bucket nonportable
scoop install virtualbox-np
VirtualBox 本体のコマンドラインからのインストール方法はすでに確立されていますので、解説は他に任せます。
また、BIOS で VT-x が有効になっているかなどの初歩的トラップの解説も他に任せます。
今回の本質とはかけ離れますので。
2. VBoxManage
にパスが通っている
VBoxManage -v
と入力して、バージョン情報が返ってくれば OK です。
エラーの場合は、VirtualBox インストールフォルダに移動して作業してみてください。
デフォルトでは下記パスに移動すれば、パスが通っていなくても OK です。
cd "C:\Program Files\Oracle\VirtualBox"
VBoxManage -v
Scoop で VirtualBox をインストールしていれば、パスは自動で設定してくれます。
Scoop 最高!
コマンド
下記7行です。一気にコピペして実行できます。
途中、ユーザーアカウント制御が表示されますのでご注意ください。
$ver = VBoxManage -v
$ver = $ver.Remove( $ver.IndexOf("r") )
Invoke-WebRequest -Uri "https://download.virtualbox.org/virtualbox/${ver}/Oracle_VM_VirtualBox_Extension_Pack-${ver}.vbox-extpack" -OutFile Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack -UseBasicParsing
echo y | VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack
rm Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack
VBoxManage extpack cleanup
Remove-Variable ver
ざっくり解説すると、ver という変数に現在の VirtualBox のバージョンを取得させ、それに対応した Extension Pack をダウンロードしてインストール(アップデート)させているだけです。
感想
実は scoop でインストールできる virtualbox-with-extension-pack-np
だと、Extension Pack も合わせてインストールしてくれるのですが、この Extension Pack が古いバージョンのものがインストールされることが多いです。
いちいち Issue だすのもめんどくさいし、出したところで手動でアップデートしなきゃいけないし、ということで応用が効く手段を構築しておきたかったのでした。
ま、Docker 使う機会の方が多くなってきているんですけどね。。。
参考
公式ドキュメントより
Oracle VM VirtualBox User Manual
Chapter 8. VBoxManage
8.41. VBoxManage extpack
https://www.virtualbox.org/manual/ch08.html#vboxmanage-extpack