我知道我可以从 wineconfig GUI 添加 dll-overrides:
WINEPREFIX="$somedir" winecfg
我知道我能暂时地
WINEDLLOVERRIDES
通过指定环境变量从命令行添加 dll-overrides :WINEPREFIX="$somedir" WINEDLLOVERRIDES="$somedlloverrides" wine "$pathtoexe"
但这不会改变 wine 配置,只是暂时使用改变的设置。
我想从命令行更改 wine 配置(具体来说:添加 dll-override)。
是否有命令行工具可以帮助我做到这一点?
答案1
这是从您想要查看的工具中摘录的可以完成您想要的操作的代码:葡萄酒技巧:
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 自己的功能(使用 Google 编写 winetricks 动词元数据),或者只是将 winetricks 函数用作库。