UNC пути в Wine (решение)

Изображение пользователя Priestone.

Потребовалось на днях запустить одну Windows-программу под wine. Тривиальная (почти) задача, но в пылу борьбы возникла проблема. Заключалась она в том, что данной программе требовалось обращаться к сетевым файловым ресурсам по UNC-пути. В самой Windows в таком случае просто указывается ресурс как: \\server\share, а вот в wine, на первый взгляд, так не получалось, но решение есть.

Итак, имеем:

1. Программу, запущенную под wine (не обсуждаем как, но вам удалось её запустить и это даже не зависает).
2. Файловый сервер, предоставляющий ресурсы по SMB (на самом деле не только по smb - дальше станет понятно).

Чтобы программа получила желаемое требуется сделать несколько простых вещей:

а) примонтировать сетевой ресурс удобным для вас способом в удобное вам место файловой системы;
б) создать каталог unc/<имя сервера> в каталоге ~/.wine/dosdevices;
в) создать символическую ссылку на примонтированный ресурс в ~/.wine/dosdevices/unc/<имя сервера>/

Пример.
Ресурс примонтирован в файловую систему в точку: /mnt/server/share
Создаём, если нет такового, каталог ~/.wine/dosdevices/unc/, а в нём создаём каталог с именем сервера.
В свежесозданном каталоге создаём симлинк на примонтированный ресурс.

И как это выглядит в консоли:
$ mkdir -p ~/.wine/dosdevices/unc/server
$ ln -s /mnt/server/share ~/.wine/dosdevices/unc/server/share

Готово.

P.S. Из пункта а) следует что неважно каким образом предоставляется ресурс. Это может быть smb, nfs, sshfs и т.д. и т.п. Но программа из-под wine всё равно увидит этот ресурс по желаемому ей пути \\сервер\ресурс.
Победить данную проблему помогло пристальное рассматривание вывода winepath.
Спросим у неё: "как ты видишь UNC-путь \\server\share?"

~$ winepath -u \\server\share
/home/user/.wine/dosdevices/z:/servershare

А вот про тонкость с каталогом unc пришлось "догадаться" с помощью гугления. Чего и всем желаю )))

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры