Je viens d'installer 14.04 à partir de zéro et de faire fonctionner MS Word grâce à wine (1.7.17 de ppa).
Le problème est que je ne peux pas accéder à mes partages de lecteur réseau via Wine (je suis dans un réseau local Office).
Avec l'ancien Ubuntu 11.10, je venais d'ouvrir des fichiers .doc dans MS Word et de les modifier. Il semble maintenant que wine ne puisse pas accéder aux partages samba déjà montés dans Nautilus.
Le problème semble être lié aux changements récents dans la manière de monter des partages réseau d'Ubuntu:
l'ancien répertoire: /home/*username*/.gvfs
a été remplacé par: /run/user/1000/gvfs
Les noms des partages montés ne sont pas lisibles à partir de wine (il essaie donc d'ouvrir le dossier directement à partir de MS Word)
J'ai trouvé une solution de contournement.
J'utilise 13.04 mais je pense que c'est la même chose.
La solution consiste à associer le dossier GVFS à un autre nom.
Créez ce fichier (gvfs-patch) dans /usr/share/playonlinux/bash
:
Sudo -H gedit /usr/share/playonlinux/bash/gvfs-patch
#!/bin/bash
LOGFILE=/dev/null
GVFS_HOME=/run/user/$USER/gvfs
# Create BASE folder
BASE=/tmp/POL-$USER-gvfs
if [ ! -d "$BASE" ]; then
echo "Create BASE folder : $BASE" >> $LOGFILE
rm -fr $BASE
mkdir $BASE
else
echo "BASE folder exists : $BASE" >> $LOGFILE
fi
# Clean old symbolic link
for SHARE in $(ls "$BASE"); do
if [[ ! -e "$BASE/$SHARE" && -h "$BASE/$SHARE" ]]; then
echo "Remove OLD share folder : $SHARE" >> /tmp/diego.txt
rm -f "$BASE/$SHARE"
else
echo "Share folder valid : $SHARE" >> $LOGFILE
fi
done
# Create symbolic link for ALL share
for SHARE in $(ls "$GVFS_HOME"); do
NSHARE=$(echo $SHARE | sed 's/:/-/g')
if [ ! -e "$BASE/$NSHARE" ]; then
echo "Create share folder : $NSHARE" >> $LOGFILE
ln -s "$GVFS_HOME/$SHARE" "$BASE/$NSHARE"
else
echo "Share folder valid : $BASE/$NSHARE" >> $LOGFILE
fi
done
echo $1 | sed "s|$GVFS_HOME|$BASE|g" | sed 's/:/-/g'
Le rendre exécutable
Sudo chmod +x /usr/share/playonlinux/bash/gvfs-patch
Sudo chown root.root /usr/share/playonlinux/bash/gvfs-patch
Corrige ce fichier: /usr/share/playonlinux/bash/document_reader
Sudo -H gedit /usr/share/playonlinux/bash/document_reader
A la ligne 43 (avant realpath = ...), ajoutez ceci:
doc=$($PLAYONLINUX/bash/gvfs-patch "$doc")
En me basant sur la réponse de Diego, j'ai intégré cela dans un emballage de vin qui peut être utilisé pour des installations de vin classiques. Je n'ai ciblé que le cas spécifique où wine est exécuté en tant que "wine start", où le chemin est le 4ème argument, mais cela pourrait être étendu pour parcourir tous les arguments testant les noms de chemins.
Également pour moi, le dossier dans /run/user
était mon UID et non mon nom d'utilisateur.
Créer ce fichier (vin) dans /usr/local/bin
Sudo -H gedit /usr/local/bin/wine
ajoutez ces contenus:
#!/bin/bash
LOGFILE=/dev/null
GVFS_HOME=/run/user/`id -u $USERID`/gvfs
BASE=/tmp/POL-$USER-gvfs
setupgvfstmp() {
# Create BASE folder
if [ ! -d "$BASE" ]; then
echo "Create BASE folder : $BASE" >> $LOGFILE
rm -fr $BASE
mkdir $BASE
else
echo "BASE folder exists : $BASE" >> $LOGFILE
fi
# Clean old symbolic link
for SHARE in $(ls "$BASE"); do
if [[ ! -e "$BASE/$SHARE" && -h "$BASE/$SHARE" ]]; then
echo "Remove OLD share folder : $SHARE" >> /tmp/diego.txt
rm -f "$BASE/$SHARE"
else
echo "Share folder valid : $SHARE" >> $LOGFILE
fi
done
# Create symbolic link for ALL share
for SHARE in $(ls "$GVFS_HOME"); do
NSHARE=$(echo $SHARE | sed 's/:/-/g')
if [ ! -e "$BASE/$NSHARE" ]; then
echo "Create share folder : $NSHARE" >> $LOGFILE
ln -s "$GVFS_HOME/$SHARE" "$BASE/$NSHARE"
else
echo "Share folder valid : $BASE/$NSHARE" >> $LOGFILE
fi
done
}
if [ "$1" = "start" ] && [ -e "$4" ]; then
# This only fiddles with stuff if the path is in $4, cos thats what my desktop shortcuts seem to do
#env WINEPREFIX="/home/phil/.wine" wine start /ProgIDOpen Excel.Sheet.12 %f
START=$1
WHAT=$2
FLAG=$3
TARGET=$4
shift 4
echo "$TARGET" | grep $GVFS_HOME > /dev/null 2>&1
if [ "$?" == 0 ]; then
# Because gvfs sometimes hangs for me, only do this if the path is in gvfs
setupgvfstmp
TARGET=`echo $TARGET | sed "s|$GVFS_HOME|$BASE|g" | sed 's/:/-/g'`
fi
/usr/bin/wine "$START" "$WHAT" "$FLAG" "$TARGET" "$@"
else
/usr/bin/wine "$@"
fi
Le rendre exécutable
Sudo chmod +x /usr/local/bin/wine
Assurez-vous que /usr/local/bin
est dans votre $ PATH et vient avant /usr/bin
.