Иногда бывают ситуации, когда для работы необходимо одно-два приложения, работающих только в ОС Windows. Например, пользователю необходимо запускать приложение в Lotus Notes, которое в свою очередь использует OLE-автоматизацию и открывает документы в Microsoft Office. Следовательно, не смотря на наличие клиента Lotus Notes для ОС семейства Linux, всё равно придётся установить Lotus Notes для ОС Windows.
Работа приложений для ОС Windows в Ульяновск.BSD обеспечивается транслятором wine. И установка каждого такого приложения имеет свои особенности. С уверенностью можно гарантировать работу тех приложений и их версий, установка которых проверена многими пользователями. Подробнее о совместимости приложений можно узнать в базе данных на сайте WINEHQ. В данном случае рассмотрим установку и работу 32-х битных приложений Lotus Notes 8.5.3 (Basic) и Microsoft Office 2010 Professional.
Для начала необходимо установить транслятор wine, поддержку выполнения 32-х битных приложений и утилиту winetricks для решения некоторых проблем:
pkg install -r latest wine-devel
pkg install -r latest winetricks
Если в системе установлены принтеры и предполагается печатать на них из приложений, запускаемых в wine, то необходимо под пользователем root создать ссылку:
mv /etc/printcap /etc/printcap_
ln -s /usr/local/etc/printcap /etc/printcap
Внимание! После добавления принтера информация о нём попадает в файл /usr/local/etc/printcap только после перезагрузки CUPS. Чтобы wine правильно воспринимал принтеры, их названия и описания должны быть обязательно заданы и, если в названиях есть буквы, то они должны быть только латинскими. Пример правильной строки с описанием принтера в файле /usr/local/etc/printcap:
HP-1018|Office printer N1:rm=ulbsd:rp=HP-1018:
Перед тем, как что-то установить в трансляторе wine, нужно запустить под пользователем следующую команду:
/usr/local/share/wine/pkg32.sh install -r latest wine-devel mesa-dri
Обычно рекомендуется устанавливать каждое приложение для wine в каталог с индивидуальным префиксом. Но в данном случае приложения должны взаимодействовать друг с другом и должны быть установлены в один и тот же каталог. Необходимо создать каталог и проинициализировать настройки wine в этом каталоге:
mkdir -p $HOME/.wine/lotus
env WINEARCH=win32 WINEPREFIX=$HOME/.wine/lotus winecfg
Откроется окно конфигурации wine, в котором на вкладке «Applications» в поле «Windows Version» необходимо выбрать Windows XP, а на вкладке «Graphics» убрать галочку «Allow the window manager to decorate the windows» и нажать кнопку «ОК».
Теперь можно запускать установку Microsoft Office (предполагается, что дистрибутив находится в текущем каталоге):
env WINEPREFIX=$HOME/.wine/lotus wine Office_Pro_2010_Russian_x32.exe
Для установки желательно выбрать только Microsoft Excel, Microsoft PowerPoint, Microsoft Word, Общие средства Office и Средства Office, а остальные параметры оставить по умолчанию.
После успешной установки Microsoft Office необходимо установить библиотеки msxml6 и dotnet20sp1. Затем снова запустить конфигуратор wine:
env WINEPREFIX=$HOME/.wine/lotus winetricks msxml6 dotnet20sp1
env WINEPREFIX=$HOME/.wine/lotus winecfg
В конфигураторе на вкладке «Libraries» в выпадающем списке «New override for library» выбрать riched20 и нажать кнопку «Add», то же самое сделать для gdiplus и нажать кнопку «ОК».
Для устранения проблемы с минимизацией и максимизацией окон Microsoft Office под wine необходимо сделать следующее. Открыть «Параметры системы» → «Поведение окон» → «Особые параметры окон» и создать новое правило. На вкладке «Выбор окон» заполнить поле «Описание». В выпадающем списке «Класс окна (приложение)» выбрать «Регулярное выражение» и ввести:
.*\b(winword.exe|excel.exe|powerpnt.exe)\b.*
Поставить галочку «Соответствие всему классу окон». Кликнуть на кнопку «+ Добавить свойство» и в подразделе «Геометрия» выбрать «Игнорировать запрошенную геометрию», выбрать «Принудительно», выбрать «Да». В завершение нажать кнопку «Применить».
Теперь можно перейти к установке Lotus Notes (Basic) (предполагается, что дистрибутив находится в текущем каталоге):
env WINEPREFIX=$HOME/.wine/lotus wine Lotus_notes853_BC_Win_RU.exe
После успешной установки в случае возникновения проблемы с открытием в Lotus Notes диалога «Файл» → «Безопасность» → «Безопасность пользователя...» необходимо сделать следующее. Скопировать из рабочей системы Windows XP из каталога %WINDIR%\system32\ файлы oleacc.dll, oleaccrc.dll и переписать их в каталог $HOME/.wine/lotus/drive_c/Program Files/IBM/Lotus/Notes/. Затем необходимо запустить конфигуратор wine и на вкладке «Libraries» в выпадающем списке «New override for library» выбрать oleacc и нажать кнопку «Add».
Если при установке Lotus Notes была выбрана опция установки «Только для меня» и после этого Lotus Notes запускается с ошибкой, то можно попробовать изменить команду запуска в ярлыке Lotus Notes. Она должна выглядеть так:
env WINEPREFIX=$HOME/.wine/lotus wine "C:\Program Files\IBM\Lotus\Notes\notes.exe" -sa "=C:\Program Files\IBM\Lotus\Notes\notes.ini"
А рабочий путь в ярлыке должен выглядеть так:
$HOME/.wine/lotus/dosdevices/c:/Program Files/IBM/Lotus/Notes/
В итоге можно вполне комфортно работать в Lotus Notes и Microsoft Office. Ярлыки всех устанавливаемых под wine приложений появляются в меню «Приложения» → «Wine» → «Programs».
Примечание 1:
Установка Lotus Notes 8.5.3 (Basic) и Microsoft Office 2010 Professional проверена в wine версии 7.22. В более новых версиях wine установка этих приложений не проверялась.
Примечание 2:
Ядро операционной системы можно настроить для обнаружения бинарного файла MS Windows и автоматического запуска wine для запуска бинарного файла MS Windows. Следующую команду необходимо набрать одной строкой в терминале под пользователем root:
binmiscctl add wine --interpreter /usr/local/bin/wine --magic "\x4d\x5a\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xff\xff\x00\x00\xb8\x00\x00\x00" --mask "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" --size 20 --set-enabled
Это позволяет рассматривать бинарные файлы MS Windows как обычные бинарные файлы (т.е. не нужно для запуска указывать wine имя_файла.exe, достаточно просто указать имя_файла.exe).