1
  1. Я знаю, что могу добавить dll-переопределения из графического интерфейса wineconfig:

    WINEPREFIX="$somedir" winecfg
    
  2. Я знаю, что могу временно добавить переопределения dll из командной строки, указав переменную среды WINEDLLOVERRIDES :

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

    Но это не изменит настройки вина, просто временно используйте измененные настройки.

Я хочу изменить конфигурацию Wine (в частности: добавить dll-override) из командной строки.

Есть ли инструмент командной строки, который поможет мне это сделать?

1 ответ1

1

Это исключительный код, который делает то, что вы хотите, из инструмента, который вы хотите посмотреть: 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 (google для записи метаданных глагола winetricks) для ваших случаев использования, или просто использовать функции winetricks в качестве библиотеки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .