Comment ajouter dll-override à la configuration de vin à partir de la ligne de commande?

1
  1. Je sais que je peux ajouter des dll-overrides à partir de l'interface graphique de wineconfig:

    WINEPREFIX="$somedir" winecfg
    
  2. Je sais que je peux temporairement ajouter des substitutions de DLL à partir de la ligne de commande en spécifiant WINEDLLOVERRIDESla variable d'environnement:

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

    Mais cela ne changera pas les configurations de vin, mais utilisera temporairement les paramètres modifiés.

Je veux changer la configuration de Wine (en particulier: add dll-override) à partir de la ligne de commande.

Existe-t-il un outil en ligne de commande qui m'aidera à le faire?

Sasha
la source
PS: Peut-être que je devrais le demander sur stackoverflow.com ou unix.stackexchange.com ?
Sasha

Réponses:

1

C'est un code exceprt qui fait ce que vous voulez, à partir d'un outil que vous souhaitez examiner: 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
}

Cette fonction bash crée d’abord un override-dll.regfichier dans le répertoire temporaire, puis essaie de l’importer avec le préfixe sélectionné regedit. Vous pouvez spécifier des remplacements comme:

w_override_dlls native,builtin comctl32

Une autre fonction utile définit le remplacement pour une application spécifique, telle que:

w_override_app_dlls winecfg.exe builtin comctl32

Ce que vous pouvez faire est d’écrire votre propre script bash en l’inspirant, ou d’étendre les fonctionnalités de Winetricks (Google pour écrire des métadonnées de verbe Winetricks) pour vos cas d’utilisation, ou d’utiliser simplement les fonctions de winetricks en tant que bibliothèque.

guido
la source