Я только что установил 14.04 с нуля и заставил MS Word работать благодаря Wine (1.7.17 от ppa).
Проблема в том, что я не могу получить доступ к общим сетевым дискам через Wine (я нахожусь в локальной сети Office).
Со старой Ubuntu 11.10 я только что открыл .doc файлы в MS Word и отредактировал, теперь кажется, что wine не может получить доступ к общим ресурсам samba, которые уже смонтированы в nautilus.
Проблема, по-видимому, связана с недавними изменениями в способе монтирования сетевых ресурсов в Ubuntu:
старый каталог: /home/*username*/.gvfs
был заменен на: /run/user/1000/gvfs
Имена смонтированных общих папок не читаются из Wine (поэтому он пытается открыть папку прямо из MS Word)
Я нашел обходное решение.
я использую 13.04, но я думаю, то же.
решение состоит в том, чтобы связать папку GVFS с другим именем.
Создают этот файл (gvfs-патч) в /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'
Делают его исполняемым файлом
sudo chmod +x /usr/share/playonlinux/bash/gvfs-patch
sudo chown root.root /usr/share/playonlinux/bash/gvfs-patch
Патч этот файл: /usr/share/playonlinux/bash/document_reader
sudo -H gedit /usr/share/playonlinux/bash/document_reader
В строке 43 (перед realpath =...) добавляют это:
doc=$($PLAYONLINUX/bash/gvfs-patch "$doc")
Основываясь на ответе Diego, я интегрировал это в винную обертку, которая может использоваться для классических Винных установок. Я был только нацелен на определенный экземпляр, куда вино выполняется, поскольку "вино запускается", где путь является 4-м аргументом, но это могло быть расширено для итерации посредством всего тестирования аргументов на пути.
Также для меня, папка в /run/user
была моим UID не имя пользователя.
Создают этот файл (вино) в /usr/local/bin
sudo -H gedit /usr/local/bin/wine
, добавляет это содержание:
#!/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
Делают его, исполняемый файл
sudo chmod +x /usr/local/bin/wine
Удостоверяется, что /usr/local/bin
находится в Вашем $PATH и прибывает прежде /usr/bin
.