web-dev-qa-db-ja.com

コマンドラインからwineconfigにdll-overrideを追加するにはどうすればよいですか?

  1. 私はwineconfigGUIからdllオーバーライドを追加できることを知っています:

    WINEPREFIX="$somedir" winecfg
    
  2. WINEDLLOVERRIDES環境変数を指定することにより、コマンドラインからdllオーバーライドを追加できることを知っています一時的に

    WINEPREFIX="$somedir" WINEDLLOVERRIDES="$somedlloverrides" wine "$pathtoexe"
    

    ただし、これによってワインの構成が変更されることはなく、変更された設定を一時的に使用するだけです。

コマンドラインからwineconfig(具体的にはdll-overrideを追加)を変更したい。

それを行うのに役立つコマンドラインツールはありますか?

1
Sasha

これは、調べたいツールから、必要なことを実行する例外コードです: 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関数をライブラリとして使用することができます。

1
guido