WINE: различия между версиями
Нет описания правки |
|||
(не показаны 72 промежуточные версии 14 участников) | |||
Строка 1: | Строка 1: | ||
{ | [[en:Wine]] | ||
=== | {|class="wikitable" style="float: right; margin-left: 2em" | ||
! colspan="2" | Wine | |||
|- | |||
| colspan="2" | [[Изображение:User-menu-Wine.png |64px|center]] | |||
|- | |||
| colspan="2" | [[Изображение:WineScreen.png |300px|center|]] | |||
|- | |||
| '''Разработчик(и)''' | |||
| Wine Project,<br>CodeWeavers,<br>Etersoft и др. | |||
|- | |||
| '''Первый выпуск''' | |||
| 1993 | |||
|- | |||
| '''Лицензия''' | |||
| GNU LGPL | |||
|- | |||
| '''Сайт''' | |||
| [https://www.winehq.org/ winehq.org] | |||
|} | |||
=== О Wine === | |||
'''Wine''' — Wine Is Not Emulator — это свободная реализация среды ОС Windows поверх Linux (*UNIX) подсистем. Исполнение Windows-программ производится напрямую без какой-либо эмуляции и с минимальными накладными расходами. | |||
* Официальный сайт: [https://www.winehq.org/ winehq.org] | |||
* | * Руководство пользователя: [https://wiki.winehq.org/Wine_User's_Guide Wine_User's_Guide] | ||
* | * Отчёты пользователей с описанием опыта запуска тех или иных Windows-программ: [https://appdb.winehq.org/ appdb.winehq.org] | ||
* Отчёты по запуску игр: [https://www.protondb.com/ protondb.com] | |||
=== Установка Wine === | |||
Wine состоит из нескольких основных и вспомогательных пакетов: | |||
* {{pkg|wine}} — среда Wine для выполнения 64-битных программ. | |||
* {{pkg|i586-wine}} — 32-х битная среда Wine. | |||
* {{pkg|wine-common}} — основные утилиты среды Wine (wineboot, winecfg, wineconsole, wineserver и т.д.). | |||
* {{pkg|wine-programs}} — вспомогательные программы (notepad, winefile, winemine). | |||
* {{pkg|wine-gecko}} — свободная реализация Internet Explorer на основе браузерного движка [https://wiki.winehq.org/Gecko Gecko]. | |||
* {{pkg|wine-mono}} — [https://wiki.winehq.org/Mono свободная реализация .NET Framework]. Охватывает версии .NET, начиная с 1.x до 4.8.x. | |||
* {{pkg|winetricks}} — [https://wiki.winehq.org/Winetricks скрипт], предоставляющий различные опции по управлению средой Wine. Чаще всего используется для упрощения установки несвободных компонентов Windows и ряда Windows-программ от сторонних разработчиков. | |||
==== На этапе установки дистрибутива ==== | |||
Если во время установки дистрибутива Альт были выбраны '''Эмуляторы''' или '''Виртуализация''' и '''Запуск программ Windows''', то Wine будет установлен автоматически (после может потребоваться установка некоторых 32-битных библиотек - см. пункт [[WINE#Нюансы_по_i586-wine|Нюансы по i586-wine]]): | |||
== | {| class="mw-collapsible mw-collapsed wikitable" style="margin-left:2em" | ||
![Список устанавливаемых пакетов при автоматической установке:] | |||
|- | |||
| | |||
{{pkg|wine}} | |||
{{pkg|wine-common}} | |||
{{pkg|i586-libnss-mdns}} | |||
{{pkg|i586-libnss-myhostname}} | |||
{{pkg|i586-xorg-dri-*}} | |||
{{pkg|wine-mono}} | |||
{{pkg|wine-gecko}} | |||
{{pkg|winetricks}} | |||
{{pkg|i586-wine}} | |||
{{pkg|i586-wine-cpcsp_proxy}} | |||
{{pkg|virtualbox}} | |||
|} | |||
==== Установка вручную ==== | |||
Если '''Эмуляторы''' или '''Виртуализация''' и '''Запуск программ Windows''' во время установки не были выбраны, то Wine можно установить вручную (после может потребоваться установка некоторых 32-битных библиотек - см. пункт [[WINE#Нюансы_по_i586-wine|Нюансы по i586-wine]]): | |||
$ su - | |||
# apt-get update | |||
# apt-get install wine-full i586-wine | |||
{| class="mw-collapsible mw-collapsed wikitable" style="margin-left:2em" | |||
![Список устанавливаемых пакетов при ручной установке:] | |||
|- | |||
| | |||
{{pkg|cabextract}} | |||
{{pkg|libOSMesa}} | |||
{{pkg|wine}} | |||
{{pkg|wine-common}} | |||
{{pkg|wine-full}} | |||
{{pkg|wine-gecko-*}} | |||
{{pkg|wine-mono-*}} | |||
{{pkg|wine-programs}} | |||
{{pkg|winetricks}} | |||
{{pkg|i586-wine}} | |||
{{pkg|i586-*}} | |||
|} | |||
==== Установка с помощью Epm ==== | |||
{{Примечание| | |||
Epm - единая команда управления пакетами, разработанная в компании Etersoft (основная статья - [[Epm]]). Позволяет устанавливать как пакеты из репозитория ALT Linux, так и чужие пакеты (предназначенные для другой ОС на базе Linux). Для установки epm в ALT Linux: | |||
$ su - | |||
# apt-get update | |||
# apt-get install eepm | |||
}} | |||
{{Attention|Установка из репозитория Десятой платформы p10 может быть неудачна, в случае возникновения ошибки выполните установку wine вручную или обновите epm из стороннего репозитория.}} | |||
su - | |||
apt-get update | |||
epm play wine | |||
С помощью скрипта [[Epm]] будут установлены все вышеперечисленные пакеты, а также выполнена установка некоторых 32-битных библиотек - см. пункт [[WINE#Нюансы_по_i586-wine|Нюансы по i586-wine]]). | |||
==== Нюансы по i586-wine ==== | |||
На момент 2023 года поддержка выполнения 32-х битных программ в 64-х битной среде (Windows-on-Windows) находится на завершающем этапе разработки, но пока не используется в сборке для репозитория платформы. Поэтому всё ещё требуется отдельная установка 32-х битой среды Wine и попутного комплекта 32-х битных Linux-библиотек. Всё необходимое устанавливается при варианте установки посредством {{cmd|epm play wine}}. | |||
В случае, когда пакет {{pkg|i586-wine}} отсутствует, при запуске 32-х битной программы будет выведено предупреждение и программа не заработает: | |||
{{cmd|It looks like i586-wine is missing, you should install it. As root, please execute "apt-get install i586-wine"}} | |||
В случае, когда пакет {{pkg|i586-wine}} был установлен отдельно, могут потребоваться некоторые 32-х битные библиотеки (в основном 32-х битные графические драйвера). Это легко исправить выполнением следующей команды: | |||
epm play i586-fix | |||
Если пакет i586-wine был установлен после создания префикса, то префикс придётся удалить и пересоздать, иначе программы в нём перестанут работать и будет выведена ошибка: | |||
{{cmd|wine: could not load kernel32.dll, status c0000135}} | |||
Пример пересоздания префикса. Команды выполняются с правами обычного пользователя. | |||
Полное удаление: | |||
rm -r /home/$USER/.wine | |||
Пересоздание префикса по стандартному пути ''/home/$USER/.wine'': | |||
wineboot -i | |||
=== Основы по использованию Wine === | |||
==== Префиксы ==== | |||
Wine управляет префиксами (prefix), которые можно назвать отдельными экземплярами ОС Windows. | |||
* Стандартный префикс располагается в ''/home/$USER/.wine''. | |||
* Префикс содержит в себе файлы реестра, каталоги, набор библиотек и программ, расположенных по той же структуре, как и в оригинальной Windows. | |||
[[Файл:Altlinux wine basics a 10.png|800px|center]] | |||
** ''dosdevices'' — в каталоге располагаются символические ссылки на каталоги, которые имитируют Windows-тома (диски). Тома обозначаются латинской буквой. К примеру, системный том Windows по умолчанию обозначается «C:». | |||
** ''drive_c'' — условный том «C:», в котором располагаются компоненты Windows. | |||
[[Файл:Altlinux wine basics a 20.png|800px|center]] | |||
** ''.update-timestamp'' — [https://en.wikipedia.org/wiki/Unix_time метка времени]. | |||
** ''system.reg'', ''user.reg'' и ''userdef.reg'' являются файлами [https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B5%D1%81%D1%82%D1%80_Windows реестра Windows]. | |||
* По умолчанию создаются 64-х битные префиксы. | |||
* Компоненты эталонного префикса, из которого создаются все прочие создаваемые пользователем префиксы, находятся в ''/usr/lib64/wine/x86_64-windows/''. | |||
* Wine-префиксы на жаргоне называют "бутылками". | |||
<br> | |||
===== Особенности и ограничения префиксов ===== | |||
* Название префикса может быть любым, но для избежания затруднений следует придерживаться следующего: | |||
** Название префикса принято начинать с ''.wine''. Пример: ''.wine_nalogul''. В этом случае сразу понятно, что это Wine-префикс и что в него установлена программа Налогоплательщик ЮЛ. | |||
** Название должно содержать только латинские буквы и арабские цифры. Из символов можно применять знак точки, расположенный в самом начале названия, что означает скрытый каталог. | |||
** Название не должно содержать пробелы, иначе путь придётся экранировать кавычками, чтобы интерпретатор мог корректно его обработать. В противном случае можно легко столкнуться со следующей ошибкой: ''wine: invalid directory in WINEPREFIX: not an absolute path'' | |||
* Можно создавать префиксы в любых желаемых каталогах, принадлежащих пользователю. | |||
* Ограничений по количеству префиксов нет. | |||
* '''''Категорически недопустимо создание префиксов с правами суперпользователя'''''. Это крайне небезопасно — программы в префиксе получают доступ ко всем файлам системы. Так же обычный пользователь не сможет взаимодействовать с префиксом, так как им будет владеть суперпользователь. | |||
* Wine поддерживает одновременную работу множества Windows-программ, запущенных в одном или нескольких префиксах. | |||
* Не смотря на то, что Wine позволяет запускать исполняемые файлы Windows-программ из любого места пространства пользователя, правильнее это делать, разместив исполняемый файл внутри префикса. Оптимальным вариантом будет размещение в его корневом каталоге: ''home/$USER/.wine/drive_c''. Такой подход связан с тем, что некоторые Windows-программы становятся неработоспособными, если расположены вне пространства префикса. Поэтому лучше предупредить возникновение подобных проблем и располагать исполняемые файлы внутри префикса. | |||
* Крайней нежелательно размещать префикс на разделе с файловой системой NTFS (основная файловая система OC Windows). Данная файловая система не поддерживает систему прав и атрибутов Linux, что приведёт к проблемам с запуском программ. | |||
* '''''НЕДОПУСТИМО устанавливать в префикс Windows-драйвера для видеокарт, переферийных устройств, звуковых карт и подобного оборудования. Потенциально это может привести к сбою устройства, а в случае таких устройств, как мышь и клавиатура — полной неработоспособности.''''' | |||
* Wine-префикс не предоставляет существенной изоляции Windows-процессов от пространства Linux-пользователя, поэтому не стоит пытаться запускать вредоносные программы для Windows, так как потенциально они способны нанести вред Linux-системе. К примеру, запущенный в префиксе шифровальщик может зашифровать не только префикс, но и выйти за его пределы, зашифровав все каталоги и файлы, принадлежащие Linux-пользователю, так как все процессы, запущенные в префиксе, выполняются с правами пользователя. | |||
* Настоятельно не рекомендуется устанавливать всё в один префикс, оптимальнее создавать новый под каждую программу. Это особенно критично, если для работы той или иной программы требуется установить несвободный Windows-компонент. В таком случае может получиться так, что компонент, улучшающий работоспособность одной программы, будет приводить к сбоям других программ, что сильно усложнит отладку и выяснение причин сбоев. В свою очередь, использование отдельных префиксов для каждой программы, требующей установку несвободных Windows-компонентов, позволит полностью избежать подобных проблем. | |||
* Префиксы можно свободно перемещать и копировать, что удобно для создания резервных копий подготовленных под ту или иную задачу экземпляров. | |||
<br> | |||
===== Создание префиксов ===== | |||
Как было ранее отмечено, можно создавать собственные префиксы и не ограничиваться стандартным ''/home/$USER/.wine''. Пример создания нового префикса (выполнять от обычного пользователя): | |||
WINEPREFIX="/home/$USER/.wine_new" wineboot -i | |||
Пояснения: | |||
* ''WINEPREFIX'' — это переменная окружения, которой требуется передать путь до каталога размещения компонентов префикса. В примере был передан путь до каталога ''wine_new'' причём он не обязательно должен существовать заранее. | |||
* ''wineboot -i'' — утилита отвечает за создание префикса, подготовку его к работе, имитацию перезагрузки и выключения ОС Windows. Ключ «-i» инициирует создание префикса. | |||
{{Note|Префикс так же будет автоматически создан при попытке его обновления (wineboot -u), конфигурирования (winecfg) и прочих подобных манипуляциях.}} | |||
По умолчанию создаются 64-х битные префиксы, причём в них могут выполняться и 32-х битные программы. Но бывают случаи, когда требуется «чистый» 32-битный префикс. Его можно создать следующим образом: | |||
WINEARCH=win32 WINEPREFIX="/home/$USER/.wine32_new" wineboot -i | |||
Пояснения: | |||
* ''WINEARCH'' — с помощью этой переменной окружения можно управлять разрядностью создаваемых префиксов. При передаче значения «win32» будет создан 32-х битный префикс. | |||
{{Note|У ранее созданного префикса нельзя поменять разрядность.}} | |||
<br> | |||
==== Запуск программ ==== | |||
{{Note|Прямой запуск «.exe» в Альт отключен в целях безопасности. Если прямой запуск необходим, потребуется вручную настроить выполнение MIME-типа «.exe» с помощью Wine.}} | |||
Алгоритм действий для запуска той или иной Windows-программы: | |||
* Разместить исполняемый файл в корне префикса (./drive_c/программа.exe). | |||
** Запустить: {{cmd|wine /home/$USER/.wine/drive_c/программа.exe}} | |||
* Если не запускается, ознакомиться с историями успешного запуска на [https://appdb.winehq.org/ appdb.winehq.org] и на [https://www.altlinux.org/ altlinux.org]. | |||
* По необходимости с помощью winetricks установить необходимые проприетарные Windows-компоненты (С++ redistributable, .NET Framework, Microsoft Media Foundation и т.д.). | |||
<br> | |||
Запуск на примере [https://store.steampowered.com/ клиента Steam] с созданием отдельного префикса с названием ''.wine_steam''. Команды выполняются с правами обычного пользователя. Создание префикса: | |||
WINEPREFIX=/home/$USER/.wine_steam wineboot -i | |||
Поместить в префикс ранее загруженный установочный файл '''''SteamSetup.exe''''': | |||
mv /home/$USER/Downloads/SteamSetup.exe /home/$USER/.wine_steam/drive_c/ | |||
Запустить исполняемый файл с указанием абсолютного пути: | |||
WINEPREFIX=/home/$USER/.wine_steam wine /home/$USER/.wine_steam/drive_c/SteamSetup.exe | |||
Альтернативный вариант. Wine позволяет использовать имитацию Windows-путей, где точкой отсчёта является том «C:» — корень Wine-префикса '''''./drive_c'''''. Пример: | |||
WINEPREFIX=/home/$USER/.wine_steam wine 'C:/SteamSetup.exe' | |||
{{Note|Путь в стиле DOS-Windows следует экранировать кавычками.}} | |||
Результат: | |||
[[Файл:Altlinux wine basics b 10.png|center]] | |||
После установки будет создана кнопка запуска Steam. В ней автоматически прописывается команда на запуск установленной программы из конкретного префикса, что облегчает последующий запуск. Пример команды из кнопки запуска: | |||
env WINEPREFIX="/home/$USER/.wine_steam" wine C:\\\\users\\\\Public\\\\Desktop\\\\Steam.lnk | |||
Видно, что запуск производится из нужного префикса и с Windows-ярлыка ''Steam.lnk''. | |||
Можно создавать собственные кнопки запуска, чтобы каждый раз не набивать (или копировать откуда-то) команду на запуск той или иной Windows-программы. | |||
<br> | |||
Подобным образом производится запуск любых программ с исполняемым файлом ''.exe''. | |||
<br> | |||
===== Запуск bat-файлов — «батников» ===== | |||
Ранее для запуска необходимо было задействовать [https://wiki.winehq.org/Start start], но с выходом Wine 8.0 эта опция стала применяться автоматически. Теперь достаточно запускать в обычном режиме: | |||
WINEPREFIX=/home/$USER/.wine wine 'C:/script.bat' | |||
Альтернативный устаревший вариант: | |||
WINEPREFIX=/home/$USER/.wine wine start 'C:/script.bat' | |||
<br> | |||
===== Установка программы из установочного пакета msi ===== | |||
Ранее запуск таких пакетов отличался от запуска ''.exe'', но ныне, начиная с Wine 8.0, запуск производится без задействования дополнительных опций. | |||
<br> | |||
Пример установки программы [https://www.nalog.gov.ru/rn77/program/5961229/ Налогоплательщик ЮЛ] (версия 4.81) с созданием префикса с названием ''wine32nalogul'' Команды выполняются с правами обычного пользователя. Для этой программы желательно использовать 32-х битный префикс, причём это становится необходимым, если планируется использовать печать с двумерным штрих-кодом PDF-417. Создание 32-х битного префикса: | |||
WINEARCH=win32 WINEPREFIX=/home/$USER/.wine32nalogul wineboot -i | |||
Поместить в префикс ранее загруженный установочный файл ''nalogul481.msi'' | |||
mv /home/$USER/Downloads/nalogul481.msi /home/$USER/.wine32nalogul/drive_c/ | |||
Запустить установочный пакет ''msi'' с указанием пути в стиле DOS-Windows: | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine 'C:/nalogul481.msi' | |||
Альтернативный устаревший вариант с задействованием ''msiexec'': | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine msiexec /i 'C:/nalogul481.msi' | |||
Ещё один вариант — с задействованием ''start'': | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine start 'C:/nalogul481.msi' | |||
Результат: | |||
[[Файл:Altlinux wine basics c 10.png|center]] | |||
<br> | |||
===== Использование winetricks для установки Windows-компонентов ===== | |||
В предыдущем разделе был рассмотрен запуск установщика «Налогоплательщик ЮЛ», но для полноценной работы программы, в связи с её специфической реализацией, (на момент 2023 года) требуются проприетарные Windows-компоненты: | |||
* msxml3 | |||
* msxml4 | |||
* msxml6 | |||
* corefonts | |||
Windows-компоненты удобнее всего устанавливать с помощью [https://wiki.winehq.org/Winetricks winetricks], который устанавливается вместе с прочими Wine-пакетами при установке посредством {{cmd|apt-get install wine-full}}. | |||
<br> | |||
За раз можно установить несколько Windows-компонентов, перечислив их через пробел. Пример установки с помощью winetricks: | |||
WINEPREFIX=/home/$USER/.wine32nalogul winetricks -q msxml3 msxml4 msxml6 corefonts | |||
Пояснения: | |||
* ''-q'' — «тихий» режим установки. При его использовании пропускаются диалоги «мастера установки», что избавляет от рутины. В данном случае установка может занять довольно длительное время — до пары десятков минут. | |||
* Все перечисленные Windows-компоненты будут загружены из интернета в автоматическом режиме. Установочные файлы компонентов разместятся в ''home/$USER/.cache/winetricks'' После установки их можно удалить. | |||
Налогоплательщик ЮЛ относится к программам, которые не могут запуститься без задействования ''start /unix'', имитирующего файловые ассоциации Windows Explorer (файловый менеджер ОС Windows) и устраняющего проблемы с интерпретацией UNIX-путей. Команда на запуск выглядит подобным образом: | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe' | |||
Пояснения: | |||
* В связи с тем, что в пути до исполняемого файла программы есть пробел, путь необходимо экранировать кавычками — 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'. | |||
* Из-за необходимости использования ''start /unix'' потребуется отредактировать команду в кнопке запуска: | |||
[[Файл:Altlinux wine basics c 20.png|1000px|center]] | |||
* Из-за наличия пробела в пути, там же в настройках кнопки запуска, необходимо экранировать кавычками путь в строке «Рабочий каталог». | |||
Результат запуска «Налогоплательщик ЮЛ»: | |||
[[Файл:Altlinux wine basics c 30.png|1000px|center]] | |||
<br> | |||
===== Прямое указание рабочего каталога ===== | |||
Существуют программы, которым необходимо напрямую указывать [https://ru.wikipedia.org/wiki/Рабочий_каталог рабочий каталог] (working directory), иначе они не смогут найти все необходимые для запуска ресурсы, так как те находятся в каталоге уровнем выше, в то время как поиск ресурсов производится сначала в каталоге с исполняемым файлом, после в его подкаталогах рекурсивно в глубину, а затем в ''C:\windows''. Следовательно, такие программы окажутся неработоспособными при прямом запуске. В этом случае потребуется вручную указать рабочий каталог — отправную точку для рекурсивного поиска всех нужных программе ресурсов. | |||
Это можно осуществить двумя способами: создать кнопку запуска и указать в ней путь до рабочего каталога или прямо указать в команде на запуск. На примере игры STALKER Clear Sky рассмотрим второй способ. | |||
<br> | |||
Вводная: | |||
* Создан префикс с названием ''.wine64clearsky'' | |||
* Путь установки игры в префиксе: ''C:/Program Files (x86)/STALKER Clear Sky'' | |||
* Исполняемый файл игры ''xrEngine.exe'' находится в каталоге ''./STALKER Clear Sky/'''bin'''''. | |||
* Ресурсы игры находятся в каталогах: | |||
** ''./STALKER Clear Sky/'''levels''''' | |||
** ''./STALKER Clear Sky/'''Localization''''' | |||
** ''./STALKER Clear Sky/'''patches''''' | |||
** ''./STALKER Clear Sky/'''resources''''' | |||
Отправная точка для успешного поиска ресурсов находится уровнем выше (каталог ''./STALKER Clear Sky/'', чем расположение исполняемого файла (''./STALKER Clear Sky/bin/xrEngine.exe''), тем самым при прямом выполнении игра не найдёт ресурсы: | |||
[[Файл:Altlinux wine basics clearsky.png|center]] | |||
Это решается следующим образом: | |||
WINEPREFIX=/home/$USER/.wine64clearsky wine start /d 'C:/Program Files (x86)/STALKER Clear Sky/' ./bin/xrEngine.exe | |||
Пояснения: | |||
* ''start /d'' — с опцией /d по указанному пути обозначается рабочий каталог, который станет отправной точкой в рекурсивном поиске ресурсов для запуска программы. | |||
* С тем учётом, что рабочий каталог указан, можно указать относительный путь до исполняемого файла. В данном случае ''./bin/xrEngine.exe''. | |||
Благодаря этому, программа сможет найти все необходимые для запуска ресурсы. | |||
<br> | |||
===== Установка, запуск и удаление программ в графическом режиме ===== | |||
''winefile'' — файловый менеджер Wine с графическим интерфейсом, схожий по функционалу с Windows Explorer (Проводник Windows). С его помощью можно осуществлять различные операции над файлами и каталогами в префиксе, включая запуск Windows-программ. | |||
Пример запуска файлового менеджера для префикса с названием ''.wine32nalogul'': | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine winefile | |||
[[Файл:Altlinux wine basics winefile.png|center]] | |||
Запуск Windows-программ осуществляется двойным щелчком по исполняемому файлу или ярлыку (.lnk): | |||
[[Файл:Altlinux wine basics winefile exec.png|center]] | |||
В целом логика управления во многом аналогична типичному файловому менеджеру Linux. Стоит отметить, что файлы, удалённые через файловый менеджер Wine, окажутся в обычной системной корзине (trash:///). | |||
<br> | |||
Установленные в префикс программы можно удалить в графическом режиме через «Панель управления» и «Установка/удаление программ»: | |||
[[Файл:Altlinux wine basics winefile control.png|center]] | |||
В открывшемся окне из списка выбрать ранее установленную программу и нажать кнопку «Удалить»: | |||
[[Файл:Altlinux wine basics control.png|center]] | |||
Альтернативным способом открытия «Установка/удаление программ» (''uninstaller'') является прямой запуск. Пример: | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine uninstaller | |||
<br> | |||
===== Принудительное завершение работы сбойных программ ===== | |||
Бывают случаи, когда работу сбойной программы довольно неудобно завершать штатными средствами Linux, особенно в случаях, когда программа приводит к зависанию завершения работы процессов префикса: ''services.exe'', ''winedevice.exe'', ''plugplay.exe'' и т.д. Принудительно завершить работу всех программ в префиксе можно следующим образом: | |||
WINEPREFIX=/home/$USER/.wine wineboot -k | |||
Альтернативный вариант с тем же эффектом: | |||
WINEPREFIX=/home/$USER/.wine wineserver -k | |||
Выполнение этих команд является эквивалентом нажатия кнопки ''Reset'', при этом будет «принудительно перезагружен» только указанный префикс, а не вся система. | |||
Более мягким вариантом, а так же удобным способом ознакомиться со всеми активными процессами префикса, является использование штатной программы ''taskmgr'' — «Диспетчер задач». Пример запуска для префикса с названием ''.wine32nalogul'': | |||
WINEPREFIX=/home/$USER/.wine32nalogul wine taskmgr | |||
Демонстрация содержимого вкладок (объединены в одну картинку): | |||
[[Файл:Altlinux wine basics taskmgr.png|900px|center]] | |||
<br> | |||
==== Удаление префиксов ==== | |||
Самым удобным способом является удаление посредством winetricks: | |||
WINEPREFIX=/путь/до/префикса winetricks annihilate | |||
В этом случае будут удалены: | |||
* Каталог префикса вместе со всем содержимым. | |||
* Кнопки запуска и миниатюры для программ, установленных в удаляемый префикс. | |||
Тем самым не остаётся никаких остаточных файлов. | |||
Если по какой-то причине префикс был удалён вручную, останутся некоторые файлы, которые придётся зачистить так же вручную. | |||
Место хранения кнопок запуска: | |||
~/.local/share/applications/wine/ | |||
Место хранения миниатюр, включая тех программ, что установлены в Wine: | |||
~/.local/share/icons/hicolor/ | |||
Так же можно удалить ненужные Windows-установщики, загруженные winetricks при установке Windows-компонентов в префикс: | |||
~/.cache/winetricks/ | |||
=== Возможности, предоставляемые Wine === | |||
Wine позволяет запускать 32- и 64-битные исполняемые файлы (PE executable), имеющие расширение .exe и предназначенные для выполнения в Windows-совместимом окружении. Wine предоставляет все необходимые для запуска программ динамические библиотеки (.dll-файлы), а также поддерживает установку и работу дополнительных компонент (библиотек), требуемых программами. Такая установка может выполняться через инструмент установки сторонних дополнений winetricks или же непосредственно инсталлятором программы. | |||
В частности, поддерживаются такие интерфейсы как | |||
* GDI; | |||
* GDIPlus; | |||
* Print; | |||
* CryptoAPI (частично); | |||
* Internet Explorer (частично); | |||
* DirectX; | |||
* видео- и аудио-кодеки; | |||
* .NET (в реализации Mono); | |||
* кодирование и раскодирование изображений в форматах JPEG, PNG, GIF, TIFF, BMP; | |||
* OpenGL; | |||
* ODBC; | |||
* LDAP (частично); | |||
В частности, поддерживается установка и работа следующих сторонних дополнений: | |||
* библиотек времени выполнения (runtime) для программ, собранных в средах разработки Visual C++ версий от 2003 до 2019 включительно, а также версии 6; | |||
* Microsoft Data Access Components (MDAC 2.7, MDAC 2.8) | |||
* MS Jet 4.0 | |||
* Microsoft .NET версий от 1.1 до 4.8 включительно; | |||
* .NET Core версий 2.2 и 3.0; | |||
* Microsoft Visual FoxPro версий от 6.0 до 9.0 включительно. | |||
<br> | |||
==== Реестр в Wine ==== | |||
Каждый Wine-префикс имеет собственный экземпляр реестра Windows. Основные особенности: | |||
* Реестр префикса состоит из нескольких файлов: ''system.reg'', ''user.reg'' и ''userdef.reg''. | |||
** Файлы располагаются в корневом каталоге префикса. Пример: ~/.wine/ | |||
* Иерархия разделов реестра Wine-префикса аналогична Windows. | |||
* В реестре хранятся различные настройки среды префикса. | |||
* Дерево реестра из оригинальной ОС Windows не совместимо с реестром Wine и наоборот. | |||
** В реестр Wine-префикса можно импортировать отдельные записи из reg-файлов, предназначенных для Windows. | |||
* В Wine реализованы стандартные Windows-утилиты для работы с реестром. | |||
** [https://wiki.winehq.org/Regedit regedit] — утилита с графическим интерфейсом, идентичным оригинальной программе. | |||
** [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/reg reg] — утилита для манипуляций с записями в реестре через терминал. | |||
** Файлы реестра Wine можно редактировать обычным текстовым редактором. | |||
* [https://wiki.winehq.org/Useful_Registry_Keys Ключи реестра Wine-префикса]. | |||
Пример запуска regedit для префикса с названием ''.wine'': | |||
WINEPREFIX=/home/$USER/.wine wine regedit | |||
[[Файл:Altlinux wine basics regedit.png|центр]] | |||
<br> | |||
==== Переключение транслятора ==== | |||
Для работы программ, задействующих DirectX, в Wine используется специальный транслятор, который преобразует вызовы API DirectX в OpenGL или Vulkan. | |||
Трансляция в OpenGL имеет значительные накладные расходы, что выражается в потерях до 40% производительности в отдельных случаях и до 20% в среднем. Имеет высокую совместимость со старыми видеокартами. | |||
Транслятор на основе Vulkan более производительный, но требует относительно современного оборудования: видеокарты от 2016 года с поддержкой спецификации Vulkan 1.3. Потери редко превышают 20% и, благодаря более продвинутым качественным драйверам и подсистемам, производительность частенько несколько выше (до 10%), чем в Windows. | |||
Кроме отмеченных трансляторов, в Wine присутствует свободная реализация [https://learn.microsoft.com/en-us/windows/win32/gdi/windows-gdi GDI], который можно задействовать для правильной отрисовки графики в некоторых программах 90-х и начала 2000-х годов. К примеру, [https://store.steampowered.com/app/575690/PARKAN/ Parkan Хроника империи]. | |||
По заявлению разработчиков, в 2022 году между трансляторами был достигнут паритет по поддержке спецификаций DirectX, поэтому предпочтительно задействовать Vulkan-транслятор. При этом стоит отметить, что OpenGL-транслятор всё-таки имеет более высокую совместимость со старыми программами (по крайней мере, на момент 2023 года). | |||
На момент 2023 года Vulkan-транслятор не используется по умолчанию и его необходимо задействовать вручную. Актуальным способом является переключение через переменную окружения ''WINE_D3D_CONFIG''. | |||
Пример: | |||
WINE_D3D_CONFIG='renderer=vulkan' WINEPREFIX=/home/$USER/.wine wine 'C:/Program Files (x86)/STALKER Clear Sky/STALKER Clear Sky.lnk' | |||
Пояснения: | |||
* Переменной окружения ''WINE_D3D_CONFIG'' необходимо передать значение 'renderer=vulkan'. | |||
* Vulkan-транслятор будет задействован для конкретной программы. | |||
{{Note|Таким же способом можно задействовать GDI — <nowiki>WINE_D3D_CONFIG='renderer=gdi'</nowiki> }} | |||
<br> | |||
==== Ассоциация файлов с родными приложениями Linux ==== | |||
Нужна для возможности открытия документов из приложений в Wine через нативные программы в Линуксе. | |||
Для этого создайте файл {{path|/usr/local/bin/winenative}} со следующим содержимым: | |||
<source lang="sh">#!/bin/sh | |||
$1 "`wine winepath -u "$2"`"</source> | |||
Сделайте его исполняемым: {{cmd|chmod +x /usr/local/bin/winenative}} | |||
Затем от пользователя запускаем редактор реестра: {{cmd|wine regedit}}. В '''HKEY_CLASSES_ROOT''' ищем ключ - pdffile для PDF-файлов, pngfile для PNG изображений и т.п., в нем будет ''shell > open''. В ''open'' может быть ''ddeexec'', который нужно удалить (если оставить, необходимая программа хоть и откроется, однако выскочит сообщение от Wine - Ошибка DDE.). Нам необходимо создать или изменить ключ ''command''. Значение ключа выставляем: | |||
{{cmd|"Z:\usr\local\bin\winenative" xdg-open "%1"}} | |||
Должно получиться так: | |||
[[Файл:Pdf_regedit.png]] | |||
После этого настроенный тип файла будет открываться в программе по умолчанию в Линуксе. | |||
Для настройки нестандартных для Linux файлов - например doc/docx - настройка немного отличается. Нужно полностью создать следующую цепочку: | |||
HKEY_CLASSES_ROOT\docfile\shell\open\command | |||
с аналогичным значением: {{cmd|"Z:\usr\local\bin\winenative" xdg-open "%1"}}. После этого создать ветку ''HKEY_CLASSES_ROOT\doc'' со значением ''docfile'' | |||
=== Варианты Wine === | |||
{{ | В дистрибутивах ALT Linux представлено несколько вариантов Wine: | ||
* {{pkg|wine}} -- сборка Wine с добавлением патчей проекта [https://www.wine-staging.com/ Wine-staging] и доработанного силами ALT Linux Team и компании [http://etersoft.ru/ Etersoft]. Именно эта сборка является основной для дистрибутивов ALT Linux, так как имеет лучшую функциональность и поддерживается разработчиками. | |||
* {{pkg|wine-stable}} -- сборка стабильного релиза Wine c добавлением патчей проекта [https://www.wine-staging.com/ Wine-staging] и доработанного силами ALT Linux Team и компании [http://etersoft.ru/ Etersoft]. Именно эта сборка является основной для дистрибутивов ALT Linux, так как имеет лучшую функциональность и поддерживается разработчиками. | |||
* {{pkg|wine-vanilla}} -- сборка оригинального Wine от [https://www.winehq.org/ WineHQ] без каких-либо изменений. | |||
У компании Etersoft есть ещё одна -- коммерческая -- версия: [http://etersoft.ru/wine WINE@Etersoft], которая также совместима с дистрибутивами ALT Linux (впрочем, как и с другими дистрибутивами Linux). WINE@Etersoft сертифицируется на предмет совместимости как с операционной системой, так и с приложениями, что позволяет получить поддержку и гарантии работоспособности. | |||
== Полезные команды == | |||
wine cmd # Windows terminal / execute bat batch scripts, etc. (CLI) | |||
wine control # Wines equivalent of the Windows Control panel (GUI) | |||
wine eject # Eject a disc from the specified optical drive (CLI) | |||
winepath # mangle Windows <-> Unix paths (CLI) | |||
wine reg # registry editor (CLI) | |||
wine taskmgr # same as Windows task manager utility (GUI) | |||
wine uninstaller # global program installer / uninstaller (GUI) | |||
wine winefile # alternative Wine file manager (GUI) | |||
wine explorer # desktop (GUI) | |||
== Ссылки по теме == | |||
* [[Arepo|Несколько архитектур в одной ОС (Arepo/Biarch) ]] | |||
** [[32-битный OpenGL на 64-битной системе с драйвером Intel]] | |||
** [[32-битный OpenGL на 64-битной системе с драйвером NVIDIA]] | |||
* [https://etersoft.ru/products/wine Описание WINE@Etersoft ] | |||
* [https://winehq.org.ru/X8664 Установка WINE@Etersoft на 64-битные ОС] | |||
* [https://winehq.org.ru/WINE@Etersoft/Enterprise Документация по WINE@Etersoft на русском языке] | |||
*[[Q4Wine]] | |||
* Ассоциация файлов с родными приложениями Linux: [http://ubuntu-wine.ru/publ/associacija_fajlov_v_wine_s_ubuntu_prilozhenijami/1-1-0-39], [https://habrahabr.ru/post/102362/] | |||
*[[Ярлычки программ]] | |||
[[Категория:HOWTO]][[Категория: | [[Категория:HOWTO]] | ||
{{Category navigation|title=WINE|category=WINE|sortkey={{SUBPAGENAME}}}} | |||
{{Category navigation|title=Софт в ALT Linux|category=Soft|sortkey={{SUBPAGENAME}}}} | |||
[[en:Wine]] | |||
[[Категория:Использование Epm]] |
Текущая версия от 16:17, 17 июля 2024
Wine | |
---|---|
Разработчик(и) | Wine Project, CodeWeavers, Etersoft и др. |
Первый выпуск | 1993 |
Лицензия | GNU LGPL |
Сайт | winehq.org |
О Wine
Wine — Wine Is Not Emulator — это свободная реализация среды ОС Windows поверх Linux (*UNIX) подсистем. Исполнение Windows-программ производится напрямую без какой-либо эмуляции и с минимальными накладными расходами.
- Официальный сайт: winehq.org
- Руководство пользователя: Wine_User's_Guide
- Отчёты пользователей с описанием опыта запуска тех или иных Windows-программ: appdb.winehq.org
- Отчёты по запуску игр: protondb.com
Установка Wine
Wine состоит из нескольких основных и вспомогательных пакетов:
- wine — среда Wine для выполнения 64-битных программ.
- i586-wine — 32-х битная среда Wine.
- wine-common — основные утилиты среды Wine (wineboot, winecfg, wineconsole, wineserver и т.д.).
- wine-programs — вспомогательные программы (notepad, winefile, winemine).
- wine-gecko — свободная реализация Internet Explorer на основе браузерного движка Gecko.
- wine-mono — свободная реализация .NET Framework. Охватывает версии .NET, начиная с 1.x до 4.8.x.
- winetricks — скрипт, предоставляющий различные опции по управлению средой Wine. Чаще всего используется для упрощения установки несвободных компонентов Windows и ряда Windows-программ от сторонних разработчиков.
На этапе установки дистрибутива
Если во время установки дистрибутива Альт были выбраны Эмуляторы или Виртуализация и Запуск программ Windows, то Wine будет установлен автоматически (после может потребоваться установка некоторых 32-битных библиотек - см. пункт Нюансы по i586-wine):
[Список устанавливаемых пакетов при автоматической установке:] |
---|
wine wine-common i586-libnss-mdns i586-libnss-myhostname i586-xorg-dri-* wine-mono wine-gecko winetricks i586-wine i586-wine-cpcsp_proxy virtualbox |
Установка вручную
Если Эмуляторы или Виртуализация и Запуск программ Windows во время установки не были выбраны, то Wine можно установить вручную (после может потребоваться установка некоторых 32-битных библиотек - см. пункт Нюансы по i586-wine):
$ su - # apt-get update # apt-get install wine-full i586-wine
[Список устанавливаемых пакетов при ручной установке:] |
---|
cabextract libOSMesa wine wine-common wine-full wine-gecko-* wine-mono-* wine-programs winetricks i586-wine i586-* |
Установка с помощью Epm
su - apt-get update epm play wine
С помощью скрипта Epm будут установлены все вышеперечисленные пакеты, а также выполнена установка некоторых 32-битных библиотек - см. пункт Нюансы по i586-wine).
Нюансы по i586-wine
На момент 2023 года поддержка выполнения 32-х битных программ в 64-х битной среде (Windows-on-Windows) находится на завершающем этапе разработки, но пока не используется в сборке для репозитория платформы. Поэтому всё ещё требуется отдельная установка 32-х битой среды Wine и попутного комплекта 32-х битных Linux-библиотек. Всё необходимое устанавливается при варианте установки посредством epm play wine.
В случае, когда пакет i586-wine отсутствует, при запуске 32-х битной программы будет выведено предупреждение и программа не заработает: It looks like i586-wine is missing, you should install it. As root, please execute "apt-get install i586-wine"
В случае, когда пакет i586-wine был установлен отдельно, могут потребоваться некоторые 32-х битные библиотеки (в основном 32-х битные графические драйвера). Это легко исправить выполнением следующей команды:
epm play i586-fix
Если пакет i586-wine был установлен после создания префикса, то префикс придётся удалить и пересоздать, иначе программы в нём перестанут работать и будет выведена ошибка: wine: could not load kernel32.dll, status c0000135
Пример пересоздания префикса. Команды выполняются с правами обычного пользователя. Полное удаление:
rm -r /home/$USER/.wine
Пересоздание префикса по стандартному пути /home/$USER/.wine:
wineboot -i
Основы по использованию Wine
Префиксы
Wine управляет префиксами (prefix), которые можно назвать отдельными экземплярами ОС Windows.
- Стандартный префикс располагается в /home/$USER/.wine.
- Префикс содержит в себе файлы реестра, каталоги, набор библиотек и программ, расположенных по той же структуре, как и в оригинальной Windows.
- dosdevices — в каталоге располагаются символические ссылки на каталоги, которые имитируют Windows-тома (диски). Тома обозначаются латинской буквой. К примеру, системный том Windows по умолчанию обозначается «C:».
- drive_c — условный том «C:», в котором располагаются компоненты Windows.
- .update-timestamp — метка времени.
- system.reg, user.reg и userdef.reg являются файлами реестра Windows.
- По умолчанию создаются 64-х битные префиксы.
- Компоненты эталонного префикса, из которого создаются все прочие создаваемые пользователем префиксы, находятся в /usr/lib64/wine/x86_64-windows/.
- Wine-префиксы на жаргоне называют "бутылками".
Особенности и ограничения префиксов
- Название префикса может быть любым, но для избежания затруднений следует придерживаться следующего:
- Название префикса принято начинать с .wine. Пример: .wine_nalogul. В этом случае сразу понятно, что это Wine-префикс и что в него установлена программа Налогоплательщик ЮЛ.
- Название должно содержать только латинские буквы и арабские цифры. Из символов можно применять знак точки, расположенный в самом начале названия, что означает скрытый каталог.
- Название не должно содержать пробелы, иначе путь придётся экранировать кавычками, чтобы интерпретатор мог корректно его обработать. В противном случае можно легко столкнуться со следующей ошибкой: wine: invalid directory in WINEPREFIX: not an absolute path
- Можно создавать префиксы в любых желаемых каталогах, принадлежащих пользователю.
- Ограничений по количеству префиксов нет.
- Категорически недопустимо создание префиксов с правами суперпользователя. Это крайне небезопасно — программы в префиксе получают доступ ко всем файлам системы. Так же обычный пользователь не сможет взаимодействовать с префиксом, так как им будет владеть суперпользователь.
- Wine поддерживает одновременную работу множества Windows-программ, запущенных в одном или нескольких префиксах.
- Не смотря на то, что Wine позволяет запускать исполняемые файлы Windows-программ из любого места пространства пользователя, правильнее это делать, разместив исполняемый файл внутри префикса. Оптимальным вариантом будет размещение в его корневом каталоге: home/$USER/.wine/drive_c. Такой подход связан с тем, что некоторые Windows-программы становятся неработоспособными, если расположены вне пространства префикса. Поэтому лучше предупредить возникновение подобных проблем и располагать исполняемые файлы внутри префикса.
- Крайней нежелательно размещать префикс на разделе с файловой системой NTFS (основная файловая система OC Windows). Данная файловая система не поддерживает систему прав и атрибутов Linux, что приведёт к проблемам с запуском программ.
- НЕДОПУСТИМО устанавливать в префикс Windows-драйвера для видеокарт, переферийных устройств, звуковых карт и подобного оборудования. Потенциально это может привести к сбою устройства, а в случае таких устройств, как мышь и клавиатура — полной неработоспособности.
- Wine-префикс не предоставляет существенной изоляции Windows-процессов от пространства Linux-пользователя, поэтому не стоит пытаться запускать вредоносные программы для Windows, так как потенциально они способны нанести вред Linux-системе. К примеру, запущенный в префиксе шифровальщик может зашифровать не только префикс, но и выйти за его пределы, зашифровав все каталоги и файлы, принадлежащие Linux-пользователю, так как все процессы, запущенные в префиксе, выполняются с правами пользователя.
- Настоятельно не рекомендуется устанавливать всё в один префикс, оптимальнее создавать новый под каждую программу. Это особенно критично, если для работы той или иной программы требуется установить несвободный Windows-компонент. В таком случае может получиться так, что компонент, улучшающий работоспособность одной программы, будет приводить к сбоям других программ, что сильно усложнит отладку и выяснение причин сбоев. В свою очередь, использование отдельных префиксов для каждой программы, требующей установку несвободных Windows-компонентов, позволит полностью избежать подобных проблем.
- Префиксы можно свободно перемещать и копировать, что удобно для создания резервных копий подготовленных под ту или иную задачу экземпляров.
Создание префиксов
Как было ранее отмечено, можно создавать собственные префиксы и не ограничиваться стандартным /home/$USER/.wine. Пример создания нового префикса (выполнять от обычного пользователя):
WINEPREFIX="/home/$USER/.wine_new" wineboot -i
Пояснения:
- WINEPREFIX — это переменная окружения, которой требуется передать путь до каталога размещения компонентов префикса. В примере был передан путь до каталога wine_new причём он не обязательно должен существовать заранее.
- wineboot -i — утилита отвечает за создание префикса, подготовку его к работе, имитацию перезагрузки и выключения ОС Windows. Ключ «-i» инициирует создание префикса.
По умолчанию создаются 64-х битные префиксы, причём в них могут выполняться и 32-х битные программы. Но бывают случаи, когда требуется «чистый» 32-битный префикс. Его можно создать следующим образом:
WINEARCH=win32 WINEPREFIX="/home/$USER/.wine32_new" wineboot -i
Пояснения:
- WINEARCH — с помощью этой переменной окружения можно управлять разрядностью создаваемых префиксов. При передаче значения «win32» будет создан 32-х битный префикс.
Запуск программ
Алгоритм действий для запуска той или иной Windows-программы:
- Разместить исполняемый файл в корне префикса (./drive_c/программа.exe).
- Запустить: wine /home/$USER/.wine/drive_c/программа.exe
- Если не запускается, ознакомиться с историями успешного запуска на appdb.winehq.org и на altlinux.org.
- По необходимости с помощью winetricks установить необходимые проприетарные Windows-компоненты (С++ redistributable, .NET Framework, Microsoft Media Foundation и т.д.).
Запуск на примере клиента Steam с созданием отдельного префикса с названием .wine_steam. Команды выполняются с правами обычного пользователя. Создание префикса:
WINEPREFIX=/home/$USER/.wine_steam wineboot -i
Поместить в префикс ранее загруженный установочный файл SteamSetup.exe:
mv /home/$USER/Downloads/SteamSetup.exe /home/$USER/.wine_steam/drive_c/
Запустить исполняемый файл с указанием абсолютного пути:
WINEPREFIX=/home/$USER/.wine_steam wine /home/$USER/.wine_steam/drive_c/SteamSetup.exe
Альтернативный вариант. Wine позволяет использовать имитацию Windows-путей, где точкой отсчёта является том «C:» — корень Wine-префикса ./drive_c. Пример:
WINEPREFIX=/home/$USER/.wine_steam wine 'C:/SteamSetup.exe'
Результат:
После установки будет создана кнопка запуска Steam. В ней автоматически прописывается команда на запуск установленной программы из конкретного префикса, что облегчает последующий запуск. Пример команды из кнопки запуска:
env WINEPREFIX="/home/$USER/.wine_steam" wine C:\\\\users\\\\Public\\\\Desktop\\\\Steam.lnk
Видно, что запуск производится из нужного префикса и с Windows-ярлыка Steam.lnk.
Можно создавать собственные кнопки запуска, чтобы каждый раз не набивать (или копировать откуда-то) команду на запуск той или иной Windows-программы.
Подобным образом производится запуск любых программ с исполняемым файлом .exe.
Запуск bat-файлов — «батников»
Ранее для запуска необходимо было задействовать start, но с выходом Wine 8.0 эта опция стала применяться автоматически. Теперь достаточно запускать в обычном режиме:
WINEPREFIX=/home/$USER/.wine wine 'C:/script.bat'
Альтернативный устаревший вариант:
WINEPREFIX=/home/$USER/.wine wine start 'C:/script.bat'
Установка программы из установочного пакета msi
Ранее запуск таких пакетов отличался от запуска .exe, но ныне, начиная с Wine 8.0, запуск производится без задействования дополнительных опций.
Пример установки программы Налогоплательщик ЮЛ (версия 4.81) с созданием префикса с названием wine32nalogul Команды выполняются с правами обычного пользователя. Для этой программы желательно использовать 32-х битный префикс, причём это становится необходимым, если планируется использовать печать с двумерным штрих-кодом PDF-417. Создание 32-х битного префикса:
WINEARCH=win32 WINEPREFIX=/home/$USER/.wine32nalogul wineboot -i
Поместить в префикс ранее загруженный установочный файл nalogul481.msi
mv /home/$USER/Downloads/nalogul481.msi /home/$USER/.wine32nalogul/drive_c/
Запустить установочный пакет msi с указанием пути в стиле DOS-Windows:
WINEPREFIX=/home/$USER/.wine32nalogul wine 'C:/nalogul481.msi'
Альтернативный устаревший вариант с задействованием msiexec:
WINEPREFIX=/home/$USER/.wine32nalogul wine msiexec /i 'C:/nalogul481.msi'
Ещё один вариант — с задействованием start:
WINEPREFIX=/home/$USER/.wine32nalogul wine start 'C:/nalogul481.msi'
Результат:
Использование winetricks для установки Windows-компонентов
В предыдущем разделе был рассмотрен запуск установщика «Налогоплательщик ЮЛ», но для полноценной работы программы, в связи с её специфической реализацией, (на момент 2023 года) требуются проприетарные Windows-компоненты:
- msxml3
- msxml4
- msxml6
- corefonts
Windows-компоненты удобнее всего устанавливать с помощью winetricks, который устанавливается вместе с прочими Wine-пакетами при установке посредством apt-get install wine-full.
За раз можно установить несколько Windows-компонентов, перечислив их через пробел. Пример установки с помощью winetricks:
WINEPREFIX=/home/$USER/.wine32nalogul winetricks -q msxml3 msxml4 msxml6 corefonts
Пояснения:
- -q — «тихий» режим установки. При его использовании пропускаются диалоги «мастера установки», что избавляет от рутины. В данном случае установка может занять довольно длительное время — до пары десятков минут.
- Все перечисленные Windows-компоненты будут загружены из интернета в автоматическом режиме. Установочные файлы компонентов разместятся в home/$USER/.cache/winetricks После установки их можно удалить.
Налогоплательщик ЮЛ относится к программам, которые не могут запуститься без задействования start /unix, имитирующего файловые ассоциации Windows Explorer (файловый менеджер ОС Windows) и устраняющего проблемы с интерпретацией UNIX-путей. Команда на запуск выглядит подобным образом:
WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'
Пояснения:
- В связи с тем, что в пути до исполняемого файла программы есть пробел, путь необходимо экранировать кавычками — 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'.
- Из-за необходимости использования start /unix потребуется отредактировать команду в кнопке запуска:
- Из-за наличия пробела в пути, там же в настройках кнопки запуска, необходимо экранировать кавычками путь в строке «Рабочий каталог».
Результат запуска «Налогоплательщик ЮЛ»:
Прямое указание рабочего каталога
Существуют программы, которым необходимо напрямую указывать рабочий каталог (working directory), иначе они не смогут найти все необходимые для запуска ресурсы, так как те находятся в каталоге уровнем выше, в то время как поиск ресурсов производится сначала в каталоге с исполняемым файлом, после в его подкаталогах рекурсивно в глубину, а затем в C:\windows. Следовательно, такие программы окажутся неработоспособными при прямом запуске. В этом случае потребуется вручную указать рабочий каталог — отправную точку для рекурсивного поиска всех нужных программе ресурсов.
Это можно осуществить двумя способами: создать кнопку запуска и указать в ней путь до рабочего каталога или прямо указать в команде на запуск. На примере игры STALKER Clear Sky рассмотрим второй способ.
Вводная:
- Создан префикс с названием .wine64clearsky
- Путь установки игры в префиксе: C:/Program Files (x86)/STALKER Clear Sky
- Исполняемый файл игры xrEngine.exe находится в каталоге ./STALKER Clear Sky/bin.
- Ресурсы игры находятся в каталогах:
- ./STALKER Clear Sky/levels
- ./STALKER Clear Sky/Localization
- ./STALKER Clear Sky/patches
- ./STALKER Clear Sky/resources
Отправная точка для успешного поиска ресурсов находится уровнем выше (каталог ./STALKER Clear Sky/, чем расположение исполняемого файла (./STALKER Clear Sky/bin/xrEngine.exe), тем самым при прямом выполнении игра не найдёт ресурсы:
Это решается следующим образом:
WINEPREFIX=/home/$USER/.wine64clearsky wine start /d 'C:/Program Files (x86)/STALKER Clear Sky/' ./bin/xrEngine.exe
Пояснения:
- start /d — с опцией /d по указанному пути обозначается рабочий каталог, который станет отправной точкой в рекурсивном поиске ресурсов для запуска программы.
- С тем учётом, что рабочий каталог указан, можно указать относительный путь до исполняемого файла. В данном случае ./bin/xrEngine.exe.
Благодаря этому, программа сможет найти все необходимые для запуска ресурсы.
Установка, запуск и удаление программ в графическом режиме
winefile — файловый менеджер Wine с графическим интерфейсом, схожий по функционалу с Windows Explorer (Проводник Windows). С его помощью можно осуществлять различные операции над файлами и каталогами в префиксе, включая запуск Windows-программ.
Пример запуска файлового менеджера для префикса с названием .wine32nalogul:
WINEPREFIX=/home/$USER/.wine32nalogul wine winefile
Запуск Windows-программ осуществляется двойным щелчком по исполняемому файлу или ярлыку (.lnk):
В целом логика управления во многом аналогична типичному файловому менеджеру Linux. Стоит отметить, что файлы, удалённые через файловый менеджер Wine, окажутся в обычной системной корзине (trash:///).
Установленные в префикс программы можно удалить в графическом режиме через «Панель управления» и «Установка/удаление программ»:
В открывшемся окне из списка выбрать ранее установленную программу и нажать кнопку «Удалить»:
Альтернативным способом открытия «Установка/удаление программ» (uninstaller) является прямой запуск. Пример:
WINEPREFIX=/home/$USER/.wine32nalogul wine uninstaller
Принудительное завершение работы сбойных программ
Бывают случаи, когда работу сбойной программы довольно неудобно завершать штатными средствами Linux, особенно в случаях, когда программа приводит к зависанию завершения работы процессов префикса: services.exe, winedevice.exe, plugplay.exe и т.д. Принудительно завершить работу всех программ в префиксе можно следующим образом:
WINEPREFIX=/home/$USER/.wine wineboot -k
Альтернативный вариант с тем же эффектом:
WINEPREFIX=/home/$USER/.wine wineserver -k
Выполнение этих команд является эквивалентом нажатия кнопки Reset, при этом будет «принудительно перезагружен» только указанный префикс, а не вся система.
Более мягким вариантом, а так же удобным способом ознакомиться со всеми активными процессами префикса, является использование штатной программы taskmgr — «Диспетчер задач». Пример запуска для префикса с названием .wine32nalogul:
WINEPREFIX=/home/$USER/.wine32nalogul wine taskmgr
Демонстрация содержимого вкладок (объединены в одну картинку):
Удаление префиксов
Самым удобным способом является удаление посредством winetricks:
WINEPREFIX=/путь/до/префикса winetricks annihilate
В этом случае будут удалены:
- Каталог префикса вместе со всем содержимым.
- Кнопки запуска и миниатюры для программ, установленных в удаляемый префикс.
Тем самым не остаётся никаких остаточных файлов.
Если по какой-то причине префикс был удалён вручную, останутся некоторые файлы, которые придётся зачистить так же вручную. Место хранения кнопок запуска:
~/.local/share/applications/wine/
Место хранения миниатюр, включая тех программ, что установлены в Wine:
~/.local/share/icons/hicolor/
Так же можно удалить ненужные Windows-установщики, загруженные winetricks при установке Windows-компонентов в префикс:
~/.cache/winetricks/
Возможности, предоставляемые Wine
Wine позволяет запускать 32- и 64-битные исполняемые файлы (PE executable), имеющие расширение .exe и предназначенные для выполнения в Windows-совместимом окружении. Wine предоставляет все необходимые для запуска программ динамические библиотеки (.dll-файлы), а также поддерживает установку и работу дополнительных компонент (библиотек), требуемых программами. Такая установка может выполняться через инструмент установки сторонних дополнений winetricks или же непосредственно инсталлятором программы.
В частности, поддерживаются такие интерфейсы как
- GDI;
- GDIPlus;
- Print;
- CryptoAPI (частично);
- Internet Explorer (частично);
- DirectX;
- видео- и аудио-кодеки;
- .NET (в реализации Mono);
- кодирование и раскодирование изображений в форматах JPEG, PNG, GIF, TIFF, BMP;
- OpenGL;
- ODBC;
- LDAP (частично);
В частности, поддерживается установка и работа следующих сторонних дополнений:
- библиотек времени выполнения (runtime) для программ, собранных в средах разработки Visual C++ версий от 2003 до 2019 включительно, а также версии 6;
- Microsoft Data Access Components (MDAC 2.7, MDAC 2.8)
- MS Jet 4.0
- Microsoft .NET версий от 1.1 до 4.8 включительно;
- .NET Core версий 2.2 и 3.0;
- Microsoft Visual FoxPro версий от 6.0 до 9.0 включительно.
Реестр в Wine
Каждый Wine-префикс имеет собственный экземпляр реестра Windows. Основные особенности:
- Реестр префикса состоит из нескольких файлов: system.reg, user.reg и userdef.reg.
- Файлы располагаются в корневом каталоге префикса. Пример: ~/.wine/
- Иерархия разделов реестра Wine-префикса аналогична Windows.
- В реестре хранятся различные настройки среды префикса.
- Дерево реестра из оригинальной ОС Windows не совместимо с реестром Wine и наоборот.
- В реестр Wine-префикса можно импортировать отдельные записи из reg-файлов, предназначенных для Windows.
- В Wine реализованы стандартные Windows-утилиты для работы с реестром.
- Ключи реестра Wine-префикса.
Пример запуска regedit для префикса с названием .wine:
WINEPREFIX=/home/$USER/.wine wine regedit
Переключение транслятора
Для работы программ, задействующих DirectX, в Wine используется специальный транслятор, который преобразует вызовы API DirectX в OpenGL или Vulkan.
Трансляция в OpenGL имеет значительные накладные расходы, что выражается в потерях до 40% производительности в отдельных случаях и до 20% в среднем. Имеет высокую совместимость со старыми видеокартами.
Транслятор на основе Vulkan более производительный, но требует относительно современного оборудования: видеокарты от 2016 года с поддержкой спецификации Vulkan 1.3. Потери редко превышают 20% и, благодаря более продвинутым качественным драйверам и подсистемам, производительность частенько несколько выше (до 10%), чем в Windows.
Кроме отмеченных трансляторов, в Wine присутствует свободная реализация GDI, который можно задействовать для правильной отрисовки графики в некоторых программах 90-х и начала 2000-х годов. К примеру, Parkan Хроника империи.
По заявлению разработчиков, в 2022 году между трансляторами был достигнут паритет по поддержке спецификаций DirectX, поэтому предпочтительно задействовать Vulkan-транслятор. При этом стоит отметить, что OpenGL-транслятор всё-таки имеет более высокую совместимость со старыми программами (по крайней мере, на момент 2023 года).
На момент 2023 года Vulkan-транслятор не используется по умолчанию и его необходимо задействовать вручную. Актуальным способом является переключение через переменную окружения WINE_D3D_CONFIG.
Пример:
WINE_D3D_CONFIG='renderer=vulkan' WINEPREFIX=/home/$USER/.wine wine 'C:/Program Files (x86)/STALKER Clear Sky/STALKER Clear Sky.lnk'
Пояснения:
- Переменной окружения WINE_D3D_CONFIG необходимо передать значение 'renderer=vulkan'.
- Vulkan-транслятор будет задействован для конкретной программы.
Ассоциация файлов с родными приложениями Linux
Нужна для возможности открытия документов из приложений в Wine через нативные программы в Линуксе.
Для этого создайте файл /usr/local/bin/winenative со следующим содержимым:
#!/bin/sh
$1 "`wine winepath -u "$2"`"
Сделайте его исполняемым: chmod +x /usr/local/bin/winenative
Затем от пользователя запускаем редактор реестра: wine regedit. В HKEY_CLASSES_ROOT ищем ключ - pdffile для PDF-файлов, pngfile для PNG изображений и т.п., в нем будет shell > open. В open может быть ddeexec, который нужно удалить (если оставить, необходимая программа хоть и откроется, однако выскочит сообщение от Wine - Ошибка DDE.). Нам необходимо создать или изменить ключ command. Значение ключа выставляем:
"Z:\usr\local\bin\winenative" xdg-open "%1"
Должно получиться так:
После этого настроенный тип файла будет открываться в программе по умолчанию в Линуксе.
Для настройки нестандартных для Linux файлов - например doc/docx - настройка немного отличается. Нужно полностью создать следующую цепочку:
HKEY_CLASSES_ROOT\docfile\shell\open\command
с аналогичным значением: "Z:\usr\local\bin\winenative" xdg-open "%1". После этого создать ветку HKEY_CLASSES_ROOT\doc со значением docfile
Варианты Wine
В дистрибутивах ALT Linux представлено несколько вариантов Wine:
- wine -- сборка Wine с добавлением патчей проекта Wine-staging и доработанного силами ALT Linux Team и компании Etersoft. Именно эта сборка является основной для дистрибутивов ALT Linux, так как имеет лучшую функциональность и поддерживается разработчиками.
- wine-stable -- сборка стабильного релиза Wine c добавлением патчей проекта Wine-staging и доработанного силами ALT Linux Team и компании Etersoft. Именно эта сборка является основной для дистрибутивов ALT Linux, так как имеет лучшую функциональность и поддерживается разработчиками.
- wine-vanilla -- сборка оригинального Wine от WineHQ без каких-либо изменений.
У компании Etersoft есть ещё одна -- коммерческая -- версия: WINE@Etersoft, которая также совместима с дистрибутивами ALT Linux (впрочем, как и с другими дистрибутивами Linux). WINE@Etersoft сертифицируется на предмет совместимости как с операционной системой, так и с приложениями, что позволяет получить поддержку и гарантии работоспособности.
Полезные команды
wine cmd # Windows terminal / execute bat batch scripts, etc. (CLI) wine control # Wines equivalent of the Windows Control panel (GUI) wine eject # Eject a disc from the specified optical drive (CLI) winepath # mangle Windows <-> Unix paths (CLI) wine reg # registry editor (CLI) wine taskmgr # same as Windows task manager utility (GUI) wine uninstaller # global program installer / uninstaller (GUI) wine winefile # alternative Wine file manager (GUI) wine explorer # desktop (GUI)
Ссылки по теме
- Несколько архитектур в одной ОС (Arepo/Biarch)
- Описание WINE@Etersoft
- Установка WINE@Etersoft на 64-битные ОС
- Документация по WINE@Etersoft на русском языке
- Q4Wine
- Ассоциация файлов с родными приложениями Linux: [1], [2]
- Ярлычки программ