ボトルフックは CrossOver
で作成したボトルを自動的にカスタマイズさせる仕組みです。動作させるにはスクリプトを使用するため、柔軟にカスタマイズできます。例えば、ボトルフックではドライブ名、レジストリ設定、C:
ドライブの内容などを修正できます。このボトルフックで特に便利なのは、配布先に応じて、またはユーザーごとに、ボトルをカスタマイズできることです。
ボトルフックで作成される3つのレベル:
システム全体のフックは root
以外のユーザーのボトルも含めて、システム上のすべてのボトルに適用するので、マシンの構成やハードウェアにボトルを適応させるには最適です。フックは
$CX_ROOT/support/scripts.d
ディレクトリに保存されています。
個人ユーザーのフックはシステム全体のフックと同じですが、個人ユーザーのボトルにのみ適用し、すべてのシステム全体のフックの実行後に実行されます。フックは、
~/Library/Application Support/CrossOver/scripts.d ディレクトリに存在します。
各ボトルにはフックのセットを組み込むことができます。フックのセットにより、特に root
以外のユーザーが管理ボトルを使用するように設定できます。このフックはまた、ボトルをアーカイブしたとき、ボトルに自動的に組み込まれ、別のコンピューター上であっても後からボトルを復元するときに実行できます。このフックは、ボトルの
scripts.d ディレクトリに保存されます。
フックは一般的にはシェルスクリプトの実行ファイルで、上のフックディレクトリに保存します。フックの名前は、
nn.name の形式で指定し、nn
はフックを実行する順番を指定した2つの10進数で、name
にドットやダッシュを指定できませんが、フックの目的を指定します。
フックがコールされるイベントの解説:
ボトルが作成された時
hook create template
template
パラメーターはボトルのベースとなるテンプレート名(例えば「win98」)を示します。
ボトルがリストアされた時
フック 復元
ボトルが新しいCrossOverのバージョンにアップグレードされた時
フックの古いバージョンのボトルがらのアップグレード
old-bottle-versionはボトルが使われていた元のCrossOverのバージョンです。
ボトルにスタブが作成された時
hook create-stub
published-wineprefix
これは、管理ボトルが root 以外のユーザーアカウントで初回使用された時に発生します。この場合、$WINEPREFIX
環境変数は新規作成したボトルスタブを指しますが、published-wineprefixは、/Library/Application Support/CrossOver/Bottlesに存在する root ユーザーの参照用コピーを指します。
ボトルスタブがアップデートされた時
hook update-stub
published-wineprefix
このケースは、published-wineprefix
の中にある、管理ボトルの参照用コピーを管理者が更新した場合に発生します。ユーザーのボトルスタブは、更新しないでください。
フックは必ず、 Wine
のコンテキスト中に呼び出されます。このため、--bottleを使用する必要はなく、次の環境変数を使用します:
CX_ROOT
CrossOverがインストールされるディレクトリへの絶対パス。
CX_BOTTLE
現在のボトル名。
WINEPREFIX
ボトルへの絶対パス。
ボトルフックは wine スクリプトを使用して WineLib や Windows アプリケーションをコールし 、レジストリの設定やボトルの他の設定を変更することができます。
このボトルフックのサンプルはドライブレターがY:にならないように修正しています。そしてユーザーの$HOMEディレクトリをH:にしています。
#!/bin/sh
rm "$WINEPREFIX/dosdevices/y:"
if [ ! -d "$WINEPREFIX/dosdevices/h:" ]
then
ln -s -f "$HOME" "$WINEPREFIX/dosdevices/h:"
fi