Wine для запуска windows приложений

Содержание
  1. Wine — запуск приложений Windows в Linux
  2. Как узнать, какая версия Wine установлена?
  3. Где взять Wine и какую выбрать версию?
  4. Что работает под Wine?
  5. Как работают игры?
  6. Как установить программу под Wine и куда она установится?
  7. Про дополнительные компоненты
  8. А есть какая-нибудь программа, которая вообще все вышеописанное сделает за меня?
  9. Что в итоге?
  10. Wine для запуска windows приложений
  11. 4.2. Как запускать Wine
  12. 4.3. Графический интерфейс Wine, подобный интерфейсу «Проводника» Windows
  13. 4.4 Опции командной строки Wine
  14. 4.4.1. —help
  15. 4.4.2. —version
  16. 4.5. Переменные окружения
  17. 4.5.1. WINEDEBUG=[channels]
  18. Таблица 1. Отладочные каналы
  19. 4.5.2. WINEDLLOVERRIDES=[DLL Overrides]
  20. 4.5.3. Настройка OSS звуковых драйверов
  21. 4.6. Опции командной строки wineserver’а
  22. 4.6.1. -d
  23. 4.6.2. -h
  24. 4.6.3. -k[n]
  25. 4.6.4. -p[n]
  26. 4.6.5. -w
  27. 4.7. Настройка переменных окружения Windows/DOS
  28. 4.8 Программы с текстовым выводом (CUI: консольный интерфейс пользователя)
  29. Таблица 2. Основные различия в консолях
  30. 4.8.1 Настройка CUI исполняемых файлов
  31. Таблица 3.Опции настройки Wineconsole

Wine — запуск приложений Windows в Linux

Wine — специальное ПО, которое позволяет запускать приложения, созданные для Windows, в UNIX-подобных системах, в том числе Linux. Слышали про Wine, думаю, если не все, то многие. Хочу и я пографоманствовать на эту тему. Множество статей о Wine гласят, что надо жать на пимпу, дергать загогулину, и тогда программа (вписать название) заработает. Я бы хотел оставить это в стороне, и рассказать о Wine в целом, о том, какие существуют тонкости, и как вообще его использовать. По крайней мере, именно этого мне не хватало по началу.

Во многих дистрибутивах Wine установлен «из коробки» — достаточно выполнить двойной щелчок на файле с расширением .exe, и, вполне вероятно, все заработает. Если же этого оказалось мало, то давайте погружаться в детали.

Как узнать, какая версия Wine установлена?

Открываем консоль, выполняем команду:

В открывшемся окне выбираем вкладку «О программе», где и находится искомое.

Где взять Wine и какую выбрать версию?

Тоже немаловажный вопрос. Выбору версии Wine у меня посвящена отдельная статья. Говоря же коротко — в каждый момент доступно три версии Wine: Stable — стабильная, проверенная версия. Beta — бета-версия, тестовая. Development release — релиз для разработчиков. В большинстве дистрибутивов предустановлена версия Stable, сейчас это Wine 1.6.2. Бета-версия, на момент написания статьи — 1.7.55, и это две большие разницы. Wine сейчас развивается очень быстро, недавно была большая оптимизация кода всего проекта. Поэтому, вообще в целом, и особенно в том случае, если Вы собираетесь устанавливать игры, я рекомендую пойти сюда: https://www.winehq.org/download/ и разжиться бета версией.

Что работает под Wine?

Прежде чем пробовать запустить что-то, целесообразно отправиться на сайт Wine, в раздел AppDB (https://appdb.winehq.org/) и поискать в базе интересующую программу. Здесь вы сразу узнаете, работает ли интересующая программа под Wine, если работает — то как, и если нужны пляски с бубном — то какие. Если же говорить и ситуации в целом, то под Wine работают очень многие программы (причем без «плясок»), однако встречаются такие, которые работают, но не очень хорошо (я, например, писал про Microsoft Office под Wine) или не работают вовсе.

Как работают игры?

Ситуация с играми, в целом, схожая — то есть, что-то работает, что-то нет. Подробную информацию можно найти все в том же AppDB .

Здесь, правда, есть еще два важных момента.

Начнем с того, что в очень многих играх вы сможете использовать только DirectX 9. Работа над поддержкой 10-й и 11-й версий идет полным ходом, но работают они пока не во всех играх, местами некорректно, местами — медленнее, чем DX9. Однако, тот факт, что на момент написания статьи, в декабре 2015-го года, под DX10 и 11 не работало вообще ничего, а на момент внесения этой правки в марте 2018-го работает уже многое — внушает оптимизм.

Вторым краеугольным камнем является производительность.

Можете ознакомиться, с проведенными мной тестами:

Они показали, что игры, использующие OpenGL, в производительности практически не теряют (если сравнивать с Windows), а вот с DirectX все не так радужно, и по сравнению с окошками производительность падает — на примере использованного мной в тестах бенчмарка Unigine Valley 2013 — более чем на 10% в DirectX 9.

Как установить программу под Wine и куда она установится?

Устанавливаются программы, зачастую, точно также, как и под Windows — запускаем установщик, жмем «далее, далее…», никаких хитростей. Ну а если есть какие-то тонкости? Как установить именно вот эту, конкретную программу? Помните рекомендацию посетить AppDB, на несколько абзацев выше? Правильно, если есть какие-то нюансы, там они, скорее всего, описаны.

Возвращаемся к установке программ. Если у Вас почему-то Wine не интегрировался в контекстное меню и не ассоциировался с exe’шниками, открываем терминал в папке с нужным файлом и выполняем:

Если надо просто запустить какой-то файл, действуем так же. Если установщик программы запускается файлом с расширением .msi, используем команду:

wine msiexec /i filename.msi

Устанавливаются программы в ваш домашний каталог, в папку .wine (папка скрытая).

После установки ярлыки программ, как правило, создаются автоматически. Если что, запускать программы можно уже известной командой:

Единственная тонкость в этом процессе, про которую я хотел бы рассказать, это префиксы Wine. Для разных программ могут потребоваться разные дополнительные компоненты, разные настройки Wine и т. п. Для этого и существуют префиксы Wine. Используя для каждой программы свой префикс, Вы сможете обеспечить им индивидуальное окружение. Для того, чтобы задействовать эту возможность, выполняем команду:

Где example, например, название программы, которая в этом префиксе будет «жить».

Читайте также:  Lenovo g565 драйвера видеокарты windows 10

Будет создан новый префикс и откроется панель управления Wine. Здесь можно что-то настроить, можно ее просто закрыть.

Все дальнейшие команды выполняем добавляя:

Например, запуская установщик нужной программы, вводим:

/.wine_example/ wine filename.exe

Соответственно, и установлена программа будет в папку .wine_example, а не в просто .wine. И удалить вы ее «со всеми потрохами» тоже сможете гораздо проще, просто «прибив» папку .wine_example.

Запускать программу, которая установлена таким образом, надо, соответственно, командой:

/.wine_example/ wine /путь/к-файлу/program.exe

Про дополнительные компоненты

Не редко для нормальной работы программе требуются какие-либо компоненты (например .net или msxml), DLL-ки и т. п.

DLL-ки переносим из Windows или, если нет под рукой «окошек», ищем в сети. Потом кладем в папку .wine/drive_c/windows/system32/. Затем выбираем эту DLL-ку в панели управления Wine (winecfg, вкладка «Библиотеки»).

Вариант третий — обращаемся за помощью к Winetricks. Это специальный набор скриптов, который поможет Вам быстро установить различные библиотеки, компоненты и шрифты (не забудьте в начале выбрать нужный префикс, если успели создать их несколько).

Разжиться этим счастьем и почитать инструкцию можно вот тут: http://wiki.winehq.org/winetricks_ru

По поводу установки уточню лишь, что во многих популярных дистрибутивах Winetricks может быть установлен из репозиториев.

Чтобы запустить Winetricks для префикса по умолчанию, достаточно выполнить команду:

Если же вы успели создать различные префиксы, то используйте команду:

/.wine_example/ winericks —gui

А есть какая-нибудь программа, которая вообще все вышеописанное сделает за меня?

Есть, причем целых две. Начнем с PlayOnLinux — https://www.playonlinux.com/ru/. Эта программа содержит большое количество сценариев для установки тех или иных приложений под Wine. Иногда нужен дистрибутив, в некоторых случаях PlayOnLinux скачает его сам, а также создаст отдельный префикс с нужными настройками Wine, скачает и установит все необходимые компоненты и т. п. В списке программ, в «общеобразовательных целях» имеются и те, которые не работают. Они подсвечены красным. Интерфейс у PlayOnLinux простой да еще и на русском языке.

Второй вариант — платное и достаточно известное решение CrossoOver (https://www.codeweavers.com/). Позиционируется как коммерческая версия Wine. Продукт, с одной стороны, нацелен на запуск офисных приложений. С другой — так же, как и в PlayOnLinux имеются сценарии для установки большого количества других приложений, в том числе игры. Лично я как-то не очень просек «фишку» этой программы. Стоит она не дешево, к тому же речь идет не о покупке «однажды и навсегда», а о подписке: 12 месяцев — 40 долларов. При этом, воспользовавшись тестовой версией (при желании сделать это можете и Вы), я увидел, что интересующие меня программы (в частности Microsoft Office, а также еще кое-что по-мелочи) работают ничуть не лучше, чем под «простым»Wine, и покупать CrossOver не стал. Не могу не заметить, что на подходе новая, 15-я, версия CrossOver, в которой нам обещают много нового — например, работающий Office 2013. Как он будет работать — конечно, большой вопрос. Но между тем.

Что в итоге?

А в итоге все просто:
— имейте свежую версию Wine;
— в случае возникновения сложностей с какой-то программой, не поленитесь посетить AppDB и просто почитать форумы. Например, на форумах многих MMO существуют специальные темы о запуске их под Wine;
— дополнительные компоненты, коль скоро такие нужны, устанавливайте при помощи Winetricks;
— особо «тяжелый» софт устанавливайте, используя специальный префикс.

Кстати, о дополнительных компонентах. Многие пытаются установить DirectX под Wine, в большинстве случаев это совершенно не обязательно. Если же игра жалуется на отсутствие какой-то конкретной библиотеки, просто установите ее через Winetricks.

А вообще — используйте Wine взвешенно. Нет никакого смысла переходить на Linux, лишь для того, чтобы пробовать запустить все свои привычные программы под Wine.

Во-первых в Linux много хорошего нативного софта, просто поищите получше, и обязательно найдете искомое. Я, например, уже описал несколько программ, которые подобрал взамен тем, которыми пользовался в «окошках».

Во-вторых, «Wine» тянет за собой не только приложения для Windows, но и различные проблемы, присущие этой платформе. Например вирусы. А учитывая тот факт, что приложения, запущенные под Wine, имеют доступ к Вашему домашнему каталогу… Некоторые, насколько я знаю, даже устанавливают под Wine антивирусы. Но это, как мне кажется, совсем перебор.

Достаточно просто соблюдать осторожность и не устанавливать все подряд. Я под Wine запускаю две игры, да еще, время от времени, архиватор 7-zip — никак не подберу полностью устраивающий меня аналог под Linux.

В противовес предостережениям, хочется сказать, что само по себе наличие такого ПО как Wine открывает много возможностей, особенно если взять во внимание тот факт, что в последнее время Wine совершенствуется буквально на глазах.

Wine для запуска windows приложений

Стандартным способом деинсталляции программ является штатный деинсталлятор самой программы, обычно зарегистрированный в аплете панели управления «Add/Remove Programs». Чтобы вызвать эквивалент деинсталлятора от самой Wine, запустите в терминале программу uninstaller (она расположена в папке programs/uninstaller/ в директории с исходниками Wine): Некоторые программы, например Internet Explorer и QuickTime, устанавливают объединенные апплеты панели управления. Вы можете вызвать панель управления Wine, запустив в терминале: которая откроет окно панели управления с установленными аплетами, как в Windows.

Если приложение не устанавливает себя в меню или значок на рабочем столе, вам придется запускать его из командной строки. Если вы помните, куда вы установили программу, то примерно такая команда: скорее всего сделает свое дело. Путь (path) не реагирует на регистр букв, но не забудьте про двойные кавычки. Некоторые программы не всегда используют достаточно очевидные способы именования своих программ и EXE файлов, так что можно заглянуть в директорию Program Files и посмотреть, что там записано.

Читайте также:  Консоль ifconfig default gateway linux

4.2. Как запускать Wine

Первым аргументом должно быть имя файла, который вы хотите запустить с помощью Wine. Если исполняемый файл находится в переменной окружения Path, можно просто напечатать его имя. Если же файл не входит в Path, то нужно указать полный путь к исполняемому файлу (в формате Windows, а не Юникс!). Например, дана такая переменная окружения Path: Вы можете запустить файл c:\windows\system\foo.exe при помощи: Однако файл c:\myapps\foo.exe придется запускать командой: (обратите внимание на двойной обратный слэш!)

О подробностях запуска исполняемых файлов в текстовом режиме (CUI) смотрите раздел ниже.

4.3. Графический интерфейс Wine, подобный интерфейсу «Проводника» Windows

4.4 Опции командной строки Wine

4.4.1. —help

4.4.2. —version

4.5. Переменные окружения

4.5.1. WINEDEBUG=[channels]

Каждый канал отладки, будучи активирован, начинает выводить сообщения протоколирования на консоль, в которой работает Wine. Вы можете перенаправить эти сообщения в файлы и исследовать их в свободное время. Но будьте осторожны! Некоторые из каналов отладки могут записывать в протокол немыслимые объемы сообщений. Среди наиболее плодовитых вредителей выделяются relay, который записывает сообщение в протокол при каждом вызове win32-функции; win, который отслеживает прохождение Windows сообщений, и, конечно, all, который является синонимом каждого отдельного существующего канала отладки. Для сложного приложения объем ваших отладочных логов легко может превысить 1 Мб и больше. Сыщик relay часто генерирует более 10 Мб логов, в зависимости от продолжительности работы программы. (Чтобы изменить содержание отчетов relay, вам придется редактировать ключ реестра RelayExclude). Ведение всех этих логов тормозит работу Wine, так что пользуйтесь WINEDEBUG только тогда, когда действительно хотите получить лог сообщения.

Внутри каждого отладочного канала, вы можете задать класс сообщений, чтобы отфильтровывать степень серьезности ошибок. Четыре класса сообщений суть: trace (след), fixme (исправить), warn (предупредить), err (ошибка).

Для включения отладочного канала, используйте форму class+channel. Для отключения канала форму class-channel. Чтобы перечислить несколько каналов в одной опции WINEDEBUG, разделяйте каналы запятыми. Например, чтобы получать сообщения класса warn в канале отладки heap, вы можете запустить Wine такой командой: Если вы не укажете класс сообщения, Wine будет выдавать сообщения всех 4 классов для данного канала: Если вы захотите получать логи со всех каналов, кроме канала relay, вы можете дать примерно такую команду: Вот список всех отладочных каналов и классов в Wine. В следующих версиях каналы будут добавлены (или убавлены).

Таблица 1. Отладочные каналы

accel adpcm advapi animate aspi
atom avicap avifile bidi bitblt
bitmap cabinet capi caret cdrom
cfgmgr32 class clipboard clipping combo
comboex comm commctrl commdlg computername
console crtdll crypt curses cursor
d3d d3d_shader d3d_surface datetime dc
ddeml ddraw ddraw_fps ddraw_geom ddraw_tex
debugstr devenum dialog dinput dll
dma dmband dmcompos dmfile dmfiledat
dmime dmloader dmscript dmstyle dmsynth
dmusic dosfs dosmem dplay dplayx
dpnhpast driver dsound dsound3d edit
enhmetafile environ event eventlog exec
file fixup font fps g711
gdi global glu graphics header
heap hook hotkey icmp icon
imagehlp imagelist imm int int21
int31 io ipaddress iphlpapi jack
joystick key keyboard listbox listview
loaddll local mapi mci mcianim
mciavi mcicda mcimidi mciwave mdi
menu menubuilder message metafile midi
mmaux mmio mmsys mmtime module
monthcal mpeg3 mpr msacm msdmo
msg mshtml msi msimg32 msisys
msrle32 msvcrt msvideo mswsock nativefont
netapi32 netbios nls nonclient ntdll
odbc ole oledlg olerelay opengl
pager palette pidl powermgnt print
process profile progress propsheet psapi
psdrv qcap quartz ras rebar
reg region relay resource richedit
rundll32 sblaster scroll seh selector
server setupapi shdocvw shell shlctrl
snmpapi snoop sound static statusbar
storage stress string syscolor system
tab tape tapi task text
thread thunk tid timer toolbar
toolhelp tooltips trackbar treeview ttydrv
twain typelib uninstaller updown urlmon
uxtheme ver virtual vxd wave
wc_font win win32 wineboot winecfg
wineconsole wine_d3d winevdm wing winhelp
wininet winmm winsock winspool wintab
wintab32 wnet x11drv x11settings xdnd
xrandr xrender xvidmode

О деталях работы с отладочными каналами, читайте The Wine Developer’s Guide.

4.5.2. WINEDLLOVERRIDES=[DLL Overrides]

Для примера: вы хотите, чтобы Wine использовал «родные» ole32.dll, oleaut32.dll и rpcrt4. Тогда запускайте Wine такой командой: В разделе замена DLL вы найдете дополнительную информацию по этому вопросу.

4.5.3. Настройка OSS звуковых драйверов

4.6. Опции командной строки wineserver’а

4.6.1. -d

4.6.2. -h

4.6.3. -k[n]

4.6.4. -p[n]

Обычно wineserver прекращает работу почти мгновенно после окончания последнего процесса Wine, использовавшего данный wineserver. Однако, в силу того, что wineserver загружает множество вещей при старте (например, данные целого реестра Windows), его последующий старт может быть весьма долгим, так что полезно удержать его от закрытия после окончания сессии Wine, сделав его постоянным.

4.6.5. -w

4.7. Настройка переменных окружения Windows/DOS

Это обеспечит доступ вашей Windows программы к переменной окружения MYENVIRONMENTVAR, когда вы запустите программу при помощи Wine. Если вы хотите установить MYENVIRONMENTVAR на постоянной основе, вы можете поместить настройку в файл /etc/profile, или также, в случае bash, в файл

Имейте однако, в виду, из этого правила есть исключения: Если вы захотите таким способом изменить переменные окружения PATH, SYSTEM или TEMP, вы, ни в коем случае не должны действовать подобным образом, потому что измените настройку переменных окружения Юникс. Вместо этого вам следует установить их в реестр. Чтобы сделать это запустите Wine regedit, и найдите ключ

Теперь вы можете создавать или изменять значения переменных как вам нужно

Эта запись определит нахождение системных файлов Windows. Системная директория Windows должна располагаться ниже директории, с установками Windows. Если у вас путь (path) к Windows такой: /usr/local/wine_c/windows, то системная директория будет: /usr/local/wine_c/windows/system. Это должно быть прописано без закрывающего слэша, и вы должны иметь право записи в эту директорию.

Читайте также:  Выберите способ установки обновлений windows некоторые параметры задает системный администратор

Это директория, где будут сохраняться ваши временные файлы, /usr/local/wine_c/temp из нашего предыдущего примера. И снова, никаких закрывающих слэшей и право на запись!!

Эта запись ведет себя как настройки PATH в Юникс системах. Если запустить пасьянс в Wine следующим образом:

то он запустится, если файл sol.exe находится в одной из директорий, включенных в Path (конечно, если файл sol.exe находится в рабочей директории, он тоже запустится). Убедитесь, что в Path всегда прописаны ваши Windows и системная директории. Для этого нужно иметь запись «c:\\windows;c:\\windows\\system».

4.8 Программы с текстовым выводом (CUI: консольный интерфейс пользователя)

Решая столь широкий диапазон свойств, и их современное применение в мире Юникс, Wine действует тремя различными способами для запуска консольных программ (aka CUI исполняемые файлы):

bare streams — исходные потоки

wineconsole with user backend — с пользовательским выходным буфером

wineconsole with curses backend — с обязательным выходным буфером

Эти имена звучат немного загадочно и непонятно. «bare streams» (исходные потоки) — означает, что Wine не осуществляет никаких дополнительных преобразований, а просто передает ввод с консоли Юникс на консоль Windows. Два других способа подразумевают использование специальной программы Wine (wineconsole), которая обеспечивает дополнительные возможности и средства. Следующая таблица описывает, что вы можете (и чего не можете) делать в этих трех вариантах.

Таблица 2. Основные различия в консолях

Функция Bare streams Wineconsole & user backend Wineconsole & curses backend
Как запускать (подразумеваем, что исполняемый файл называется foo.exe) Можно использовать в качестве опции: —backend=curses
Хорошая поддержка на строчно ориентированные приложения (которые выдают информацию строка за строкой) Да Да Да
Хорошая поддержка полноэкранных CUI приложений (включая, но не ограничиваясь, использованием цвета и мыши) Нет Да Да
Могут запускаться, даже если не запущена X11 Да Нет Да
Реализация Направляет стандартные Windows потоки на стандартные Юникс потоки (stdin/stdout/stderr) Wineconsole создает новое окно, где выводится вся информация (при условии доступности библиотеки USER32 DLL) Wineconsole использует существующую консоль Юникс (в которой идет программа) и при помощи библиотеки (n)curses получает контроль над всей поверхностью терминала для взаимодействия с пользователем
Известные ограничения Странно ведет себя, если две (или больше) Windows консоли используются в одном Юникс терминале

4.8.1 Настройка CUI исполняемых файлов

На сегодняшний день, только USER backend позволяет редактировать эти опции (мы не рекомендуем вручную вносить изменения в содержание реестра). Это редактирование начинается при помощи щелчка правой кнопкой мыши в консоли (это вызывает всплывающее меню), в котором вы можете выбрать:

  • Default (По умолчанию): это установит настройки, общие для всех приложений, которые еще не были сконфигурированы. Итак, когда приложение впервые запускается (на вашей машине и под вашим аккаунтом) в wineconsole, wineconsole унаследует эти настройки по умолчанию для этого приложения. Впоследствии приложение будет иметь собственные настройки, которые вы уже сможете изменять по своему усмотрению.
  • Properties (Свойства): редактирует настойки приложения. Когда вы закончите редактировать, у вас спросят, хотите ли вы:

1. Сохранить новые настройки только на время данного сеанса (когда вы в следующий раз запустите это приложение, вы не увидите своих изменений).

2. Использовать новые настройки в данном сеансе и сохранить их на будущее, так что в следующий раз вы снова сможете ими воспользоваться.

Вот список возможных настроек и их значение:

Таблица 3.Опции настройки Wineconsole

Размер курсора: Определяет размер курсора. Возможны 3 размера: маленький (33% от высоты символа), средний (66% от высоты символа), большой (100%).

Всплывающее меню: Как уже говорилось, это всплывающее меню настройки wineconsole запускается правым щелчком мыши в окне консоли. Однако, это может стать помехой, если приложение, которое вы запустили в wineconsole, использует правый щелчок мыши в своей работе. Нажатием клавиш Ctrl или Shift, вы вводите дополнительный контроль над правым щелчком мыши, открывающим меню. Например, если вы производите правый щелчок мышью без нажатия клавиши Shift, то событие направляется в приложение; а если вы делаете правый щелчок при нажатой клавише Shift, то открывается меню.

Quick edit (быстрый выбор): Это переключатель позволяет вам выбрать, как будет интерпретирован щелчок левой кнопкой мыши. Если вы отключите переключатель, то левый щелчок будет направлен как событие в приложение. Если включите — то с помощью левой кнопки мыши сможете выделять прямоугольную область экрана для последующего копирования в буфер обмена.

История: Позволяет установить количество команд, запоминаемых консолью. Кроме того, позволяет определить порядок сохранения повторяющихся одинаковых команд (возможно, перемежаемых другими). Если хотите сохранить их все, то отключите переключатель, если хотите сохранить только последнюю, то включите переключатель.

Police: Позволяет выбрать шрифт для консоли (файл шрифта, размер, цвета шрифта и фона).

Буфер экрана (Screenbuffer) и размер окна: Консоль, что мы видим, состоит из двух различных частей. С одной стороны, это буфер экрана, который содержит все, что программа выводит на экран. С другой стороны, это окно, которое показывает заданную часть буфера. Заметьте, что окно всегда меньше (или равно) буфера экрана. Если задать размер окна, сильно меньший, чем размер буфера, то появятся полосы прокрутки, которые позволят просматривать содержимое всего экранного буфера.

Close on exit: Если переключатель нажат, то wineconsole закроется, как только приложение завершит работу. В противном случае, консоль останется открытой, пока пользователь не закроет ее вручную, Это позволяет увидеть информацию, выводимую после завершения программы.

Оцените статью