WINE: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
(Переработка статьи. Добавлено больше подробностей по важным основам использования. Продемонстрированы варианты использования от простого к сложному.)
Строка 1: Строка 1:
=== О 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-программ от сторонних разработчиков.
Пример установки:
su -
apt-get update
epm play wine
exit
Благодаря скрипту [https://www.altlinux.org/Epm epm], будут установлены все выше перечисленные пакеты, что оптимально в обычном пользовательском сценарии использования.
По завершению установки Wine готов к использованию.
<br>
==== Нюансы по 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"}}
Если пакет 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]]
** ''dosdevices'' — в каталоге располагаются символические ссылки на каталоги, которые имитируют Windows-тома (диски). Тома обозначаются латинской буквой. К примеру, системный том Windows по умолчанию обозначается «C:».
** ''drive_c'' — условный том «C:», в котором располагаются компоненты Windows.
[[Файл:Altlinux wine basics a 20.png]]
** ''.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» инициирует создание префикса. Примечание: префикс так же будет автоматически создан при попытке его обновления (wineboot -u), конфигурирования (winecfg) и прочих действий.
По умолчанию создаются  64-х битные префиксы, причём в них могут выполняться и 32-х битные программы. Но бывают случаи, когда требуется «чистый» 32-битный префикс. Его можно создать следующим образом:
WINEARCH=win32 WINEPREFIX="/home/$USER/.wine32_new" wineboot -i
Пояснения:
* ''WINEARCH'' — с помощью этой переменной окружения можно управлять разрядностью создаваемых префиксов. При передаче значения «win32» будет создан 32-х битный префикс.
'''''Примечание:''' У ранее созданного префикса нельзя поменять разрядность.''
<br>
==== Запуск программ ====
'''''Примечание:''' Прямой запуск «.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'
'''''''Примечание:'' Путь в стиле DOS-Windows следует экранировать кавычками.'''''
Результат:
[[Файл:Altlinux wine basics b 10.png]]
После установки будет создана кнопка запуска Steam. В ней автоматически прописывается команда на запуск установленной программы из конкретного префикса, что облегчает последующий запуск. Пример команды из кнопки запуска:
env WINEPREFIX="/home/$USER/.wine_steam" wine C:\\\\users\\\\Public\\\\Desktop\\\\Steam.lnk
Видно, что запуск производится из нужного префикса и с Windows-ярлыка ''Steam.lnk''.
Можно создавать собственные кнопки запуска, чтобы каждый раз не набивать (или копировать откуда-то) команду на запуск той или иной Windows-программы.
<br>
Подобным образом производится запуск любых программ с исполняемым файлом ''.exe''.
<br>
===== Запуск bat-файлов — «батников» =====
Для запуска необходимо задействовать ''start /unix'':
WINEPREFIX=/home/$USER/.wine wine start /unix 'C:/script.bat'
===== Установка программы из установочного пакета msi =====
Запуск таких пакетов в Wine отличается от запуска ''.exe''.
<br>
Пример установки программы [https://www.nalog.gov.ru/rn77/program/5961229/ Налогоплательщик ЮЛ] (версия 4.81) с созданием префикса с названием ''wine32nalogul'' Команды выполняются с правами обычного пользователя. Для этой программы желательно использовать 32-х битный префикс, причём это становится необходимым, если планируется использовать печать с двумерным штрих-кодом PDF-417. Создание 32-х битного префикса:
WINEARCH=win32 WINEPREFIX=/home/$USER/.wine32nalogul wineboot -i
Поместить в префикс ранее загруженный установочный файл ''SteamSetup.exe''
mv /home/$USER/Downloads/nalogul481.msi /home/$USER/.wine32nalogul/drive_c/
Запустить установочный пакет ''msi'' с указанием пути в стиле DOS-Windows:
WINEPREFIX=/home/$USER/.wine32nalogul wine msiexec /i 'C:/nalogul481.msi'
Альтернативный вариант с задействованием [https://wiki.winehq.org/Start start /unix]:
WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/nalogul481.msi'
Пояснения:
* ''start /unix'' — имитирует запуск средствами Windows Explorer, что решает проблемы запуска некоторых программам.
Результат:
[[Файл:Altlinux wine basics c 10.png]]
<br>
=====  Использование winetricks для установки Windows-компонентов =====
В предыдущем разделе был рассмотрен запуск установщика «Налогоплательщик ЮЛ», но для полноценной работы программы, в связи с её специфической реализацией, (на момент 2023 года) требуются проприетарные Windows-компоненты:
* jet40
* msxml3
* msxml4
* msxml6
* gdiplus
* corefonts
Windows-компоненты удобнее всего устанавливать с помощью [https://wiki.winehq.org/Winetricks winetricks], который устанавливается вместе с прочими Wine-пакетами при установке посредством {{cmd|epm play wine}}.
<br>
За раз можно установить несколько Windows-компонентов, перечислив их через пробел. Пример установки с помощью winetricks:
WINEPREFIX=/home/$USER/.wine32nalogul winetricks -q jet40 msxml3 msxml4 msxml6 gdiplus corefonts
Пояснения:
* ''-q'' — «тихий» режим установки. При его использовании пропускаются диалоги «мастера установки», что избавляет от рутины. В данном случае установка может занять довольно длительное время — до пары десятков минут.
* Все перечисленные Windows-компоненты будут загружены из интернета в автоматическом режиме. Установочные файлы компонентов разместятся в ''home/$USER/.cache/winetricks'' После установки их можно удалить.
Налогоплательщик ЮЛ относится к тем самым программам, которые не могут запуститься без задействования ''start /unix'' имитирующего поведение Windows Explorer. Команда на запуск выглядит подобным образом:
WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'
Пояснения:
* В связи с тем, что в пути до исполняемого файла программы есть пробел, путь необходимо экранировать кавычками — 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'.
* Из-за необходимости использования ''start /unix'' потребуется отредактировать команду в кнопке запуска:
[[Файл:Altlinux wine basics c 20.png]]
* Из-за наличия пробела в пути, там же в настройках кнопки запуска, необходимо экранировать кавычками путь в строке «Рабочий каталог».
Результат запуска «Налогоплательщик ЮЛ»:
[[Файл:Altlinux wine basics c 30.png]]
=== Возможности, предоставляемые Wine ===
=== Возможности, предоставляемые Wine ===


Строка 36: Строка 222:
[[Wine/News|Обновления Wine]]
[[Wine/News|Обновления Wine]]


=== Установка Wine ===
В 64-битных дистрибутивах пакет {{pkg|wine}}, в отличии от 64-битного Windows, поддерживает только 64-битные Windows приложения.
Для понимания того, какое это приложение, можно пояснить, что в 64-битном Windows 64-битные приложения ставятся в каталог "Program Files", а 32-битные в "Program Files (x86)"
Многие Windows-приложений на сегодня -- 32-битные, или имеют 32-битный установщик, поэтому нужно устанавливать поддержку обеих разрядностей.
==== Установка с помощью [[Epm|EPM]] ====
Для установки всех необходимых пакетов wine введите
{{cmd|epm play wine}}
или для установки ванильной версии (без дополнительных патчей):
{{cmd|epm play wine wine-vanilla}}
или для установки стабильной версии:
{{cmd|epm play wine wine-stable}}.
==== Установка вручную ====
{{Важно|Поэтому в большинстве случаев для использования Wine в 64-битной ОС надо ставить не пакет {{pkg|wine}}, а пакет {{pkg|i586-wine}} (или {{pkg|i586-wine-vanilla}})}}
{{pkg|i586-wine}} и {{pkg|i586-wine-vanilla}} -- это перепакованный 32-битный Wine для работы в 64-битной среде по технологии [[biarch|arepo]].
Для его установки необходимо убедиться, что подключён репозиторий для псевдоархитектуры [[biarch|x86_64-i586]].
Например, для [[branches/p10|ветки p10]] команда {{cmd|apt-repo}}, помимо других строчек, должна в своём выводе иметь следующую строчку (например, в {{path|/etc/apt/sources.list.d/alt.list}}):
<source lang=text>
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic
</source>
А после этого установить из 32-битных пакетов, например:
<source lang=text>
apt-get install i586-wine
</source>


===== Работа с сетью =====
===== Работа с сетью =====

Версия от 18:53, 10 мая 2023

О 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-программ от сторонних разработчиков.

Пример установки:

su -
apt-get update
epm play wine
exit

Благодаря скрипту epm, будут установлены все выше перечисленные пакеты, что оптимально в обычном пользовательском сценарии использования. По завершению установки 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 был установлен после создания префикса, то префикс придётся удалить и пересоздать, иначе программы в нём перестанут работать и будет выведена ошибка: 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

    • dosdevices — в каталоге располагаются символические ссылки на каталоги, которые имитируют Windows-тома (диски). Тома обозначаются латинской буквой. К примеру, системный том Windows по умолчанию обозначается «C:».
    • drive_c — условный том «C:», в котором располагаются компоненты Windows.

Altlinux wine basics a 20.png

  • По умолчанию создаются 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» инициирует создание префикса. Примечание: префикс так же будет автоматически создан при попытке его обновления (wineboot -u), конфигурирования (winecfg) и прочих действий.

По умолчанию создаются 64-х битные префиксы, причём в них могут выполняться и 32-х битные программы. Но бывают случаи, когда требуется «чистый» 32-битный префикс. Его можно создать следующим образом:

WINEARCH=win32 WINEPREFIX="/home/$USER/.wine32_new" wineboot -i

Пояснения:

  • WINEARCH — с помощью этой переменной окружения можно управлять разрядностью создаваемых префиксов. При передаче значения «win32» будет создан 32-х битный префикс.

Примечание: У ранее созданного префикса нельзя поменять разрядность.


Запуск программ

Примечание: Прямой запуск «.exe» в Альт отключено в целях безопасности. Если прямой запуск необходим, потребуется вручную настроить выполнение MIME-типа «.exe» с помощью Wine.

Алгоритм действий для запуска той или иной 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'

''Примечание: Путь в стиле DOS-Windows следует экранировать кавычками.

Результат: Altlinux wine basics b 10.png

После установки будет создана кнопка запуска Steam. В ней автоматически прописывается команда на запуск установленной программы из конкретного префикса, что облегчает последующий запуск. Пример команды из кнопки запуска:

env WINEPREFIX="/home/$USER/.wine_steam" wine C:\\\\users\\\\Public\\\\Desktop\\\\Steam.lnk

Видно, что запуск производится из нужного префикса и с Windows-ярлыка Steam.lnk. Можно создавать собственные кнопки запуска, чтобы каждый раз не набивать (или копировать откуда-то) команду на запуск той или иной Windows-программы.
Подобным образом производится запуск любых программ с исполняемым файлом .exe.


Запуск bat-файлов — «батников»

Для запуска необходимо задействовать start /unix:

WINEPREFIX=/home/$USER/.wine wine start /unix 'C:/script.bat'
Установка программы из установочного пакета msi

Запуск таких пакетов в Wine отличается от запуска .exe.


Пример установки программы Налогоплательщик ЮЛ (версия 4.81) с созданием префикса с названием wine32nalogul Команды выполняются с правами обычного пользователя. Для этой программы желательно использовать 32-х битный префикс, причём это становится необходимым, если планируется использовать печать с двумерным штрих-кодом PDF-417. Создание 32-х битного префикса:

WINEARCH=win32 WINEPREFIX=/home/$USER/.wine32nalogul wineboot -i

Поместить в префикс ранее загруженный установочный файл SteamSetup.exe

mv /home/$USER/Downloads/nalogul481.msi /home/$USER/.wine32nalogul/drive_c/

Запустить установочный пакет msi с указанием пути в стиле DOS-Windows:

WINEPREFIX=/home/$USER/.wine32nalogul wine msiexec /i 'C:/nalogul481.msi'

Альтернативный вариант с задействованием start /unix:

WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/nalogul481.msi'

Пояснения:

  • start /unix — имитирует запуск средствами Windows Explorer, что решает проблемы запуска некоторых программам.

Результат: Altlinux wine basics c 10.png


Использование winetricks для установки Windows-компонентов

В предыдущем разделе был рассмотрен запуск установщика «Налогоплательщик ЮЛ», но для полноценной работы программы, в связи с её специфической реализацией, (на момент 2023 года) требуются проприетарные Windows-компоненты:

  • jet40
  • msxml3
  • msxml4
  • msxml6
  • gdiplus
  • corefonts

Windows-компоненты удобнее всего устанавливать с помощью winetricks, который устанавливается вместе с прочими Wine-пакетами при установке посредством epm play wine.


За раз можно установить несколько Windows-компонентов, перечислив их через пробел. Пример установки с помощью winetricks:

WINEPREFIX=/home/$USER/.wine32nalogul winetricks -q jet40 msxml3 msxml4 msxml6 gdiplus corefonts

Пояснения:

  • -q — «тихий» режим установки. При его использовании пропускаются диалоги «мастера установки», что избавляет от рутины. В данном случае установка может занять довольно длительное время — до пары десятков минут.
  • Все перечисленные Windows-компоненты будут загружены из интернета в автоматическом режиме. Установочные файлы компонентов разместятся в home/$USER/.cache/winetricks После установки их можно удалить.

Налогоплательщик ЮЛ относится к тем самым программам, которые не могут запуститься без задействования start /unix имитирующего поведение Windows Explorer. Команда на запуск выглядит подобным образом:

WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'

Пояснения:

  • В связи с тем, что в пути до исполняемого файла программы есть пробел, путь необходимо экранировать кавычками — 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'.
  • Из-за необходимости использования start /unix потребуется отредактировать команду в кнопке запуска:

Altlinux wine basics c 20.png

  • Из-за наличия пробела в пути, там же в настройках кнопки запуска, необходимо экранировать кавычками путь в строке «Рабочий каталог».

Результат запуска «Налогоплательщик ЮЛ»: Altlinux wine basics c 30.png

Возможности, предоставляемые 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

В дистрибутивах 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


Работа с сетью

Установите i586-glibc-nss:

apt-get install i586-glibc-nss

Для доменных пользователей Active Directory, которые входят через sssd:

apt-get install i586-sssd-client
32-битные видеодрайверы

Установите i586-libwine-gl либо i586-libwine-vanilla-gl в зависимости от применяемого варианта wine, а также i586-libGL и i586-libGLU:

apt-get install -- $(rpm -qa --qf='%{NAME}' i586-libwine{,-vanilla})-gl
apt-get install i586-libGL i586-libGLU

и что-то вроде i586-xorg-dri-intel или i586-xorg-dri-radeon в зависимости от видеодрайвера, см. тж. ссылки ниже.

для работы в виртуалке может понадобится

i586-xorg-dri-swrast

Ассоциация файлов с родными приложениями 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"

Должно получиться так:

Pdf regedit.png

После этого настроенный тип файла будет открываться в программе по умолчанию в Линуксе.

Для настройки нестандартных для Linux файлов - например doc/docx - настройка немного отличается. Нужно полностью создать следующую цепочку:

HKEY_CLASSES_ROOT\docfile\shell\open\command

с аналогичным значением: "Z:\usr\local\bin\winenative" xdg-open "%1". После этого создать ветку HKEY_CLASSES_ROOT\doc со значением docfile

Полезные команды

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)

Ссылки по теме