私はwineconfigGUIからdllオーバーライドを追加できることを知っています:
WINEPREFIX="$somedir" winecfg
WINEDLLOVERRIDES
環境変数を指定することにより、コマンドラインからdllオーバーライドを追加できることを知っています一時的に:
WINEPREFIX="$somedir" WINEDLLOVERRIDES="$somedlloverrides" wine "$pathtoexe"
ただし、これによってワインの構成が変更されることはなく、変更された設定を一時的に使用するだけです。
コマンドラインからwineconfig(具体的にはdll-overrideを追加)を変更したい。
それを行うのに役立つコマンドラインツールはありますか?
これは、調べたいツールから、必要なことを実行する例外コードです: winetricks :
w_override_dlls()
{
w_skip_windows w_override_dlls && return
_W_mode=$1
case $_W_mode in
*=*)
w_die "w_override_dlls: unknown mode $_W_mode.
Usage: 'w_override_dlls mode[,mode] dll ...'." ;;
disabled)
_W_mode="" ;;
esac
shift
echo Using $_W_mode override for following DLLs: $@
cat > "$W_TMP"/override-dll.reg <<_EOF_
REGEDIT4
[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
_EOF_
while test "$1" != ""
do
case "$1" in
comctl32)
rm -rf "$W_WINDIR_UNIX"/winsxs/manifests/x86_Microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef.manifest
;;
esac
if [ "$_W_mode" = default ]
then
# To delete a registry key, give an unquoted dash as value
echo "\"*$1\"=-" >> "$W_TMP"/override-dll.reg
else
# Note: if you want to override even DLLs loaded with an absolute
# path, you need to add an asterisk:
echo "\"*$1\"=\"$_W_mode\"" >> "$W_TMP"/override-dll.reg
#echo "\"$1\"=\"$_W_mode\"" >> "$W_TMP"/override-dll.reg
fi
shift
done
w_try_regedit "$W_TMP_WIN"\\override-dll.reg
unset _W_mode
}
このbash関数は、最初に一時ディレクトリにoverride-dll.reg
ファイルを作成し、次にregedit
を使用して選択したプレフィックスにインポートしようとします。次のようなオーバーライドを指定できます。
w_override_dlls native,builtin comctl32
別の便利な関数は、次のように特定のアプリケーションのオーバーライドを設定します。
w_override_app_dlls winecfg.exe builtin comctl32
これをインスピレーションとして使用して独自のbashスクリプトを作成するか、ユースケースに合わせてwinetricks独自の機能(winetricks動詞メタデータを作成するためのGoogle)を拡張するか、winetricks関数をライブラリとして使用することができます。