Wine

Wie man mit Wine und Wineprefixes arbeitet.

Installation

Um unter Ubuntu immer die neueste Wine-Version zu erhalten, folgende Paketquelle hinzufügen:

ppa:ubuntu-wine/ppa

Details siehe Wine-Artikel von ubuntuusers

Tools

Skript "winer" erstellen

Details siehe: http://wiki.ubuntuusers.de/Wine#Wine-startet-Programme-nicht-in-ihrem-Verzeichnis

Datei mit Namen winer und folgendem Inhalt erstellen:

#!/bin/bash
##
## The winer-script executes wine with the given filename and params, but first
## changes into the file directory, which is important for some Windows programs
## to run.
##
## Requires:
##      - wine (of course)
##      - winepath to read Windows pathes like "C:\\Program Files\..."
##        (should be part of wine)
##
## No warranty or guarantee or whatsoever!
##

if [ -f "$(which wine)" ]; then
    if [ -f "$1" ]; then
        PROGRAM_PATH="$1"
    elif [ -f "$(which winepath)" ]; then
        PROGRAM_PATH="$(winepath "$1")"
    else
        echo "$1 is not a file. Winepath could not be found."
        exit 1
    fi

    shift   # Remove program name from arguments.

    if [ -f "$PROGRAM_PATH" ]; then
        cd "$(dirname "$PROGRAM_PATH")"
        wine "$(basename "$PROGRAM_PATH")" "$*"
        exit 0  # The only exit point, where everything went fine.
    else
        echo "$PROGRAM_PATH is not a file."
    fi
else
    echo "Wine could not be found. Maybe it is not installed."
fi
exit 1

winer-Skript global verfügbar machen:

sudo mv winer /usr/bin
sudo chown root.root /usr/bin/winer
sudo chmod 755 /usr/bin/winer

Bash-Befehle für Abeiten mit Wineprefixes

Die folgenden Befehle in die ~/.bashrc eintragen, um praktische Befehle für den Umgang mit Wineprefixes zu erhalten.

# Listet die verfügbaren Wineprefixes auf
alias wine-prefixes="ls -1 -d /home/til/.wine/wineprefix/*/ | sed 's#/home/til/.wine/wineprefix/##' | sed 's#/\$##'"

# Startet den Explorer eines Wineprefixes
function wine-explorer {
  if [ -z $1 ]
  then
    echo "Kein Präfix angegeben!"
  else
    WINEPREFIX=~/.wine/wineprefix/$1/ winer ~/.wine/wineprefix/$1/drive_c/windows/explorer.exe
  fi
}

# Startet die Kommandozeile eines Wineprefixes
function wine-cmd {
  if [ -z $1 ]
  then
    echo "Kein Präfix angegeben!"
  else
    WINEPREFIX=~/.wine/wineprefix/$1/ winer ~/.wine/wineprefix/$1/drive_c/windows/system32/cmd.exe
  fi
}

# Startet regedit für einen Wineprefix
function wine-regedit {
  if [ -z $1 ]
  then
    echo "Kein Präfix angegeben!"
  else
    WINEPREFIX=~/.wine/wineprefix/$1/ wine regedit
  fi
}

# Erstellt einen Wineprefix aus der Vorlage
function wine-create-prefix {
  if [ -z $1 ]
  then
    echo "Kein Präfix angegeben!"
  else
    cp -R ~/.wine/wineprefix/_vorlage ~/.wine/wineprefix/$1
  fi
}

winetricks installieren

Details siehe: http://wiki.winehq.org/winetricks

Installation:

wget http://www.kegel.com/wine/winetricks
sudo mv winetricks /usr/bin
sudo chown root.root /usr/bin/winetricks
sudo chmod 755 /usr/bin/winetricks

Winetricks-GUI für einen wineprefix starten:

export WINEPREFIX=~/.wine/wineprefix/mein-prefix/
cd $WINEPREFIX/drive_c/
winetricks

:!: Achtung: Die Installation mit GUI klappt dann manchmal nicht. In diesem Fall das gewünschte Paket als Parameter angeben. FIXME Diese Problem ist evtl. durch das cd behoben.

Installation von DirectX 9 Direct3D:

export WINEPREFIX=~/.wine/wineprefix/mein-prefix/
cd $WINEPREFIX/drive_c/
winetricks d3dx9

Installation von mfc42:

export WINEPREFIX=~/.wine/wineprefix/mein-prefix/
cd $WINEPREFIX/drive_c/
winetricks mfc42

Mit wineprefix arbeiten

Details siehe: http://wiki.ubuntuusers.de/Wine#Wineprefix

Neuen (frischen) Wineprefix anlegen:

mkdir ~/.wine/wineprefix
wineprefixcreate --prefix ~/.wine/wineprefix/mein-prefix

Neuen Wineprefix aus Vorlage anlegen:

cp -R ~/.wine/wineprefix/_vorlage ~/.wine/wineprefix/mein-prefix

Wine-Konfig für diesen Prefix öffnen:

WINEPREFIX=~/.wine/wineprefix/mein-prefix/ winecfg

Programm in Prefix mit Linux-Pfad starten:

WINEPREFIX=~/.wine/wineprefix/mein-prefix/ winer ~/.wine/wineprefix/mein-prefix/drive_c/Programme/mein-programm.exe

Explorer für einen Wineprefix starten:

cd ~/.wine/wineprefix/mein-prefix/ && WINEPREFIX=`pwd` winer drive_c/windows/explorer.exe

Programm in Prefix mit Windows-Pfad starten:

cd /home/til/.wine/wineprefix/mein-prefix/dosdevices/d\:
WINEPREFIX=~/.wine/wineprefix/mein-prefix/ wine "D:/Start.exe"

Umgebungsvariablen

Siehe: http://www.winehq.org/docs/wineusr-guide/environment-variables

Problembehandlung

Fehlende DLLs

Bei solchen Fehlermeldungen:

wine: Call from 0x43d42d to unimplemented function d3dx9_26.dll.D3DXGetImageInfoFromFileInMemory, aborting

einfach die genannte DLL (z.B. d3dx9_26.dll) aus dem Verzeichnis c:\Windows\system32 einer Windows-Installation in das Verzeichnis drive_c/windows/system32/ des wineprefix kopieren.