Как разрешить вину доступ к сетевым ресурсам?

Я только что установил 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)

1
задан 3 June 2017 в 22:40

2 ответа

Я нашел обходное решение.
я использую 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")
0
ответ дан 3 June 2017 в 22:40

Основываясь на ответе 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.

0
ответ дан 3 June 2017 в 22:40

Другие вопросы по тегам:

Похожие вопросы: