prefix creation aborted wine что делать
Хитрости и трюки при использовании Wine
Всем привет!
Прочел статью про «Все тонкости настройки Wine», оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому.
В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн.
Скорее всего данный пост будет интересен новичкам и обычным пользователям GNU\Linux. Тем не менее добротные советы от специалистов не будут лишними.
Что такое вайн думаю объяснять нет смысла. Хочу лишь показать несколько трюков при работе с ним.
Префиксы
То есть каждый созданный вами префикс можно рассматривать как отдельный wine – он независим от других префиксов. Или, для еще большей простоты, воспринимайте каждый созданный префикс, как отдельно установленную винду.
Теперь немного практики:
Сейчас мы создадим папку Gamez, в ней мы создадим префикс lib в который установим несколько библиотек. Эти библиотеки все равно пригодятся потом, поэтому пусть кешируются.
Последней командой мы опять вызвали окно конфигуратора wine. Просто перейдите на вкладку «Библиотеки» и убедитесь, что все установилось. После этого выполните:
wine winecfg — откроется конфигуратор wine (не из префикса), проверьте ту же вкладку. Видите! Здесь никаких библиотек. Значит он цел и невредим.
Как установить несколько разных версий wine?
Для решения этой задачи придется собирать wine из исходников. При сборке просто используем префикс для дефолтной установке. Примерно как здесь:
./configure prefix=/path/to/install/directory && make
sudo make install
AppDB
Обязательно используйте appdb для поиска информации по установке приложения, возможно стаф, который вы устанавливаете, уже установили и расписали все подводные камни.
Наводим порядок в домашнем каталоге
Если вы любите поиграть, то вероятно ваш /home раздел забит сейвами и прочими файлами игр. Избавиться от этого всего дела, не в ущерб можно так:
Замените стандартный путь к моим документам, на желаемое место для хранения сейвов. У меня, к примеру, этот путь ведет в папку с игрой.
Использование последних версий wine
Wine такая штука, чем новее тем лучше! С помощью следующей команды вы всегда будете иметь последнею версию wine (для Ubuntu-подобных дистрибутивов):
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
После выполнения этих команд ищите последнею версию wine в synaptic.
Установка winetricks
Если по каким-либо причинам у вас до сих пор нет winetricks, то завести его в хозяйстве можно так:
wget winetricks.org/winetricks
sudo cp winetricks /usr/bin
sudo chmod +x /usr/bin/winetricks
Как установить MSI файл?
Это можно сделать двумя способами: wine msiexec /i whatever.msi
Альтернативный способ: wine start whatever.msi
The file foo.exe is not marked as executable… — Что это значит?
Эта ошибка происходит потому что на exe файле стоит запрет на выполнение. Для файла на вашей ФС эта команда должна исправить положение:
если же файл находится на диске, то должна помочь вот эта команда:
Как вывести содержимое отладки в отдельный файл?
/.wine/drive_c/Games/Tron
wine tron.exe &> log.txt
Как отключить «crash» диалог?
Если вы используете префиксы, не забудьте в команде указать путь к префиксу — winetricks nocrashdialog
После запуска приложения\игры, wine ругается и ничего не запускает. Что делать?
Для начала изучите логи, обычно в них все написано. Ниже я приведу самые популярные ошибки:
MFC40.DLL : через winetricks установи mfc40 (Microsoft Foundation Classes from Visual C++ 4).
MFC42.DLL, MSVCP60.DLL : через winetricks установи vcrun6 (MS Visual C++ 6 sp4 libraries: mfc42, msvcp60, msvcrt).
MFC71.DLL, MSVCP71.DLL : через winetricks установи vcrun2003 (MS Visual C++ 2003 libraries: mfc71,msvcp71,msvcr71).
MFC80.DLL, MSVCP80.DLL : через winetricks установи vcrun2005 (MS Visual C++ 2005 libraries: mfc80,msvcp80,msvcr80).
MFC90.DLL, MSVCP90.DLL : через winetricks установи vcrun2008 (MS Visual C++ 2008 libraries: mfc90,msvcp90,msvcr90).
MDAC : через winetricks установи mdac27 (MS MDAC 2.7).
Мое приложение работает, но текстовые поля ведут себя странно
Проанализируйте дебаг wine после запуска приложения, если видите что ругается на RICHED20.DLL, то доустановите через winetricks следующею библиотеку: riched20
После запуска в консоль выводятся fixme сообщения. Что это?
Вы можете просто их игнорировать, это информация для разработчиков.
Через вайнтрикс можно установить 1 или 2 фреймворк. Как альтернатива использовать mono. Если же приложение требует 3 или 4 фреймворк, то скорее всего оно работать не будет (хотя 3 и даже 3.5 доступен в меню winetricks). Ждем пока решат эту проблему.
Игра которую я пытаюсь установить защищена от распространения возможно ли её установить?
Смотри список copy protection, которые работают.
Что делать если приложение требует IE?
Wine использует по умолчанию ядро\движок Gecko – это то же, что и на Firefox. Поэтому можно через winetrikcs доустановить gecko(если его нет) и\или fakeie6.
Если же это не помогло, попробуйте поменять версию windows на win2k и установить через winetricks ie6, ie7 или ie8.
Как включить сглаживание шрифтов в wine?
Если ваша версия выше чем 1.1.12 вы можете использовать winetricks и выбрать один из трех вариантов сглаживания: fontsmooth-gray, fontsmooth-rgb или fontsmooth-bgr
После выхода из игры не восстанавливается разрешение экрана
Как попасть в реестр wine?
wine regedit — Если используются префиксы укажите путь в команде.
Нуждается ли wine в отдельной установке драйверов?
Нет. Wine – это не эмулятор компьютера, он лишь переводит вызовы Windows API в понятные линуксу команды.
Безопасно ли запускать wine от root?
Никогда не запускайте wine от root пользователя.
Если это уже случилось измените владельца
Техника безопасности при использовании wine
Вот несколько советов, которые помогут вам повысить безопасность:
/.xsession-errors
done
Добавьте его в автозагрузку, и установите следующий пакет (он необходим для работы скрипта).
apt-get install inotify-tools
Ошибка создания 32-bit префикса Wine
env WINEARCH=»win32″ WINEPREFIX=»$HOME/maindir» winecfg
и к моему удивлению получил в ответ
Оказывается, если каталог существует, то создать в нем 32-битный префикс Wine в 64-битной ОС Ubuntu невозможно, будет выдаваться ошибка:
wine winearch set to win32 but is a 64-bit installation (можно создать только 64-bit префикс),
Выход нашел такой, если очень нужно создать 32-bit префикс в уже существующей папке (без ее удаления), то можно поступить следующим образом: создайте в папке будущего префикса (в моем случае это в /home/user/maindir) текстовый файл с содержанием:
WINE REGISTRY Version 2 |
#arch=win32 |
и сохраните его как system.reg
Теперь моя команда env WINEARCH=»win32″ WINEPREFIX=»$HOME/maindir» winecfg отработала нормально.
Не обращайте внимания, такая «бодяга» у многих пишется. Wine как правило работает отлично.
/.wine winecfg он пишет ошибки.
WINEARCH=win32 WINEPREFIX=
/.wine winecfg
wine: created the configuration directory ‘/home/dmin/.wine’
p11-kit: couldn’t load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
fixme:storage:create_storagefile Storage share mode not implemented.
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:mscoree:LoadLibraryShim error reading registry key for installroot
fixme:storage:create_storagefile Storage share mode not implemented.
fixme:iphlpapi:NotifyAddrChange (Handle 0x113e8d0, overlapped 0x113e8dc): stub
wine: configuration in ‘/home/dmin/.wine’ has been updated.
p11-kit: couldn’t load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
Dotnet30 fails to install on 32 bit prefix, Ubuntu #564
Comments
Adrellisartar commented Oct 23, 2015
Hello. Did some searching online, and before you moved to Github, this was a problem..that was solved. However, I see to have the problem again.
Well, searching for this, it was fixed. years ago. But I have it today. Using that Wine and Winetricks.
Steps:
Add the PPA for Wine into the terminal
Download Wine 1.7.50 by «sudo apt-get install wine1.7». Update and upgrade
wget on the link on the Github to get winetricks
«chmod +x winetricks»
«export WINEARCH=win32»
«./winetricks»
«./winetricks corefonts vcrun6 dotnet45»
Those are my steps. Not used Wine before, but the «solution» dead ends with a past version. And, trying to manually install 3.0 after 2.0, gives the same error. Placing 2.0 SP 1 in between, gives:
«error: dotnet30 conflicts with dotnet20sp1, which is already installed.»
I am at a loss. Sorry this is more like a forum post.
The text was updated successfully, but these errors were encountered:
austin987 commented Oct 23, 2015
On Oct 23, 2015 1:07 AM, «Adrellisartar» notifications@github.com wrote:
Hello. Did some searching online, and before you moved to Github, this
was a problem..that was solved. However, I see to have the problem again.
Well, searching for this, it was fixed. years ago. But I have it today.
Using that Wine and Winetricks.
Steps:
Add the PPA for Wine into the terminal
Download Wine 1.7.50 by «sudo apt-get install wine1.7». Update and upgrade
wget on the link on the Github to get winetricks
«chmod +x winetricks»
«export WINEARCH=win32»
«./winetricks»
«./winetricks corefonts vcrun6 dotnet45»
Those are my steps. Not used Wine before, but the «solution» dead ends
with a past version. And, trying to manually install 3.0 after 2.0, gives
the same error. Placing 2.0 SP 1 in between, gives:
«error: dotnet30 conflicts with dotnet20sp1, which is already installed.»
I am at a loss. Sorry this is more like a forum post.
—
Reply to this email directly or view it on GitHub.
Please post the terminal output with a clean prefix.
Gunstick commented Dec 24, 2015
Same problem, even dotnet20 does not install.
austin987 commented Dec 25, 2015
On Dec 24, 2015 3:23 PM, «Gunstick» notifications@github.com wrote:
Same problem, even dotnet20 does not install.
/.wine
$ winetricks dotnet20
Executing w_do_call dotnet20
Executing load_dotnet20
Executing w_do_call remove_mono
Executing load_remove_mono
Mono does not appear to be installed.
Executing w_do_call fontfix
Executing load_fontfix
Setting Windows version to win2k
Executing winetricks_early_wine regedit
C:\windows\Temp_dotnet20\set-winver.reg
Current wine does not have wine bug 10467, so not applying workaround
Executing env WINEDLLOVERRIDES=mscoree,fusion=n wine dotnetfx.exe
fixme:advapi:DecryptFileA «C:\users\georges\Temp\IXP000.TMP» 00000000
err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated.
Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find
it in the winbind package of your distribution.
fixme:advapi:LsaOpenPolicy ((null),0x33f310,0x00000001,0x33f2fc) stub
fixme:advapi:LsaClose (0xcafe) stub
fixme:storage:create_storagefile Storage share mode not implemented.
err:msi:msi_load_all_components can’t initialize assembly caches
err:msi:msi_load_all_components can’t initialize assembly caches
fixme:msi:MsiGetLastErrorRecord
err:msi:ITERATE_Actions Execution halted, action L»SxsInstallCA» returned
1603
fixme:imm:ImmDisableIME (-1): stub
err:ole:CoInitializeEx Attempt to change threading model of this
apartment from multi-threaded to apartment threaded
err:ole:CoInitializeEx Attempt to change threading model of this
apartment from multi-threaded to apartment threaded
fixme:richedit:ME_HandleMessage EM_SETMARGINS: stub
fixme:richedit:ME_HandleMessage EM_SETMARGINS: stub
err:ole:CoUninitialize Mismatched CoUninitialize
err:ole:CoUninitialize Mismatched CoUninitialize
Note: command ‘env WINEDLLOVERRIDES=mscoree,fusion=n wine dotnetfx.exe’
returned status 67. Aborting.
—
Reply to this email directly or view it on GitHub.
Использование Wine для запуска Windows-программ в Linux.
Примечание: Статья предназначена для новичков, но, как минимум, потребуются базовые знания о Linux (структура файловой системы, права пользователей, навыки работы с терминалом).
Содержание.
Почта для предложений и замечаний: feedback@noostyche.ru
О Wine.
Много интересного по использованию Wine можно посмотреть так:
В основном устаревший перевод руководства, но некоторые вещи всё ещё актуальны:
Arch wiki (часть вещей устарела):
Рецепты запуска конкретных программ и помощь от сообщества стоит искать здесь:
Примечание: В виду того, что с теоретической частью можно легко ознакомиться по приложенным к статье ссылкам, здесь она описывается кратко, оставляя больше пространства для практической части.
Установка в дистрибутивы на базе Ubuntu, включая Linux Mint 19.
Ещё libfaudio0 м ожно взять из этого репозитория:
Для работоспособности Wine:i386 и Wine:amd64 потребуются пакеты соответствующей архитектуры.
Пример установки из репозитория:
Пример установки скачанного пакета:
Пример установки wine-staging в Linux Mint 19.
Рекомендую использовать именно wine-staging в виду того, что эта версия содержит множество дополнительных патчей, которые в значительной степени повышают шансы на успешный запуск той или иной программы. Недостатком этой версии является то, что она несколько менее стабильна, чем wine-stable, но в основном это не критично.
Linux Mint 19 использует репозиторий Ubuntu bionic. Подключить соответствующую ветку репозитория Wine:
sudo apt-add-repository ‘deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main’
Обновить список пакетов:
sudo apt update
Должны установиться winehq-staging:i386 и winehq-staging:amd64.
Основные компоненты wine-staging будут расположены в /opt/wine-staging/
Весь список компонентов и пути до них можно вывести следующей командой:
Удаление Wine.
Вывести список всех ключей используемых репозиториев:
apt-key list
Найти ключ репозитория Wine и по последним четырём символам удалить его. Пример:
sudo apt-key del F987672F
При этом будет удалён стандартный префикс
/.wine. Поэтому, если он будет нужен в дальнейшем, стоит его заархивировать или переименовать.
Прочие префиксы нужно удалять вручную.
Обновить список репозиториев:
sudo apt update
После удаления Wine останутся иконки и некоторые пакеты. Их можно удалить вручную.
Место хранения ярлыков программ, установленных в Wine:
Место хранения иконок, включая тех программ, что установлены в Wine:
Кэш для установки таких пакетов, как wine-mono и wine-gecko:
Архив пакетов, которые устанавливались посредством winetricks в тот или иной префикс:
Использование Wine. Немного теории о префиксах (prefix).
Грубо говоря, префикс это отдельный экземпляр ОС Windows. Содержит в себе базовую структуру каталогов ОС Windows, набор библиотек и программ. В народе префикс называют «бутылкой» (bottle). Экземпляры компонентов для префикса хранятся в подкаталогах /opt/wine-staging/, откуда они копируются в создаваемый префикс.
В дистрибутивах Linux стандартный префикс располагается здесь:
По умолчанию он 32-разрядной архитектуры.
Можно создавать префиксы в любых желаемых каталогах, принадлежащих пользователю. Описание процесса создания располагается далее по статье.
Стандартное содержимое префикса:
Описание иллюстрации:
В каталоге drive_c (диск C:) содержится классическая структура каталогов Windows.
Использование Wine. Создание префиксов (prefix).
Пример создания и конфигурирования 64-х разрядного префикса с именем .wine_new в домашнем каталоге (home) активного пользователя:
WINEARCH=win64 WINEPREFIX=»/home/$USER/.wine_new» winecfg
Примечание: Для присваивания значений переменным среды правильнее использовать команду env, но в виду того, что интерпретатор умеет определять переменные среды (их имена обязательно должны быть в верхнем регистре), env можно опустить для упрощения набора команды.
WINEARCH=win64 — через переменную среды (environment variable) WINEARCH указываем, что префикс должен быть создан под архитектуру amd64. Это позволит запускать в нём 64-разрядные программы, а так же 32-разрядные. Для лучшего понимания стоит ознакомиться с Multiarch. Стоит отметить, что нельзя изменить архитектуру у созданного префикса.
WINEPREFIX=»/home/$USER/.wine_new» — через переменную среды WINEPREFIX указываем, по какому пути должен будет располагаться новый префикс. В данном примере это «/home/$USER/.wine_new». Wine требует указания абсолютного пути. Путь в виде «
/.wine_new» не подойдёт, и будет выведена ошибка: wine: invalid directory
/.wine_new in WINEPREFIX: not an absolute path.
Немного о кавычках. Они используются для экранирования пути на тот случай, если в нём будут пробелы, чтобы интерпретатор разобрался с тем, что есть путь, а что прочие команды и аргументы.
winecfg — программа для конфигурирования префикса. После её запуска произойдёт процесс непосредственного создания префикса по указанному пути.
Сразу после выполнения увидим следующий вывод:
При первом создании префикса может быть предложено скачать пакеты Mono и Geko, но, начиная с Wine 5.0, они должны скачиваться вместе с установкой Wine без дополнительных запросов. В этом случае будет предложено просто установить их в префикс.
Пакеты будут размещены здесь:
После завершение создания префикса появится окно графического интерфейса (GUI) конфигуратора префикса (winecfg):
О настройках конфигуратора несколько далее по статье. На этом этапе его окно можно закрыть.
Объём свежесозданного префикса составит около 1,3 Гб.
По аналогии можно создать 32-разрядный префикс:
WINEARCH=win32 WINEPREFIX=»/home/$USER/.wine_new32″ winecfg
Общая информация и ограничения префиксов.
Пример применения прав к префиксу:
-R — применить права рекурсивно для всех каталогов и файлов, включая вложенные.
Такой уровень прав может повлиять на работоспособность некоторых программ внутри префикса, поэтому в случае возникновения проблем с работоспособностью не забыть, что применены ограниченные права.
Конфигурирование Wine через GUI.
Основная масса полезной информации по winecfg описана здесь: https://wiki.winehq.org/Winecfg
Поэтому ниже рассмотрены только некоторые вещи.
Основная масса полезной информации по winecfg описана здесь: https://wiki.winehq.org/Winecfg
Поэтому ниже рассмотрены только некоторые вещи.
Конфигурирование осуществляется для каждого префикса в отдельности. Пример:
Язык интерфейса конфигуратора можно изменить следующей командой:
WINEPREFIX=»/home/$USER/.wine» LANG=»en_US.utf8″ winecfg
В данном случае русский сменится на английский.
Так же это позволяет cоздать англофицированный префикс, если при создании передать значение en_US.utf8 переменной среды LANG:
WINEARCH=win64 LANG=»en_US.utf8″ WINEPREFIX=»/home/$USER/.wine_new_prefix» winecfg
Таким образом получится англофицированный префикс, в котором каталоги Windows-пользователя будут на английском языке.
Вкладка «Приложения».
Одним из наиболее часто конфигурируемым параметром является выбор того, под какую версию Windows будет мимикрировать префикс. На момент 2020 года по умолчанию выбрана Windows 7. Полный список:
Эта опция особенно полезна для старых программ, которые требуют Windows XP.
Вкладка «Диски».
Здесь можно подключать виртуальные и физические разделы, виртуальные и физические DVD-приводы, сетевые диски и даже дисководы.
В данном случае подключено два виртуальных диска — C: и Z:. Диск C: является системным каталогом префикса, а диск Z: ведёт в корень файловой системы Linux. Второе в основном нежелательно, поэтому рекомендуется удалить этот виртуальный диск, тем самым изолировав префикс от основной системы. «Любопытным» программам будет сложнее выбраться за пределы префикса, что очень хорошо. При этом останется возможность указывать программам пути вне префикса вручную, то есть полная изоляция отсутствует.
Примечание: В виду неполной изоляции префиксов, вредоносные программы для Windows потенциально способны нанести вред Linux-системе.
Добавить виртуальный DVD-привод можно так:
То есть нажать кнопку «Добавить…», выбрать букву тома (в данном примере D:) и подтвердить. Далее в строке «Тип» выбрать CD-ROM. Останется указать путь до желаемого для монтирования образа DVD.
По аналогии можно добавить физический DVD-привод, выбрав его в строке «Устройство».
Вкладка «Вид и интеграция».
В этой вкладке основным является возможность выбора ассоциации стандартных каталогов Windows-пользователя, с домашними каталогами Linux-пользователя. Эта возможность располагается в блоке «Папки», он находится в нижней половине окна. Там показано то, какие каталоги Linux-пользователя соотносятся с каталогами Windows-пользователя в префиксе.
Стандартные каталоги Windows-пользователя располагаются в префиксе по следующему пути:
На снимке видно, что часть каталогов представлены символическими ссылками. Они указывают на домашние каталоги Linux-пользователя, который создал префикс. Это означает, что Windows-программы, запущенные в префиксе, будут использовать каталоги Linux-пользователя. К примеру, запущенная Windows-игра создаст каталог с сохранениями в
/Documents. На мой взгляд, такое поведение нежелательно.
Можно легко изменить это ассоциирование, указав другие каталоги или вовсе убрав все ассоциации, что изолирует префикс от домашних каталогов пользователя (но не даёт полной изоляции). Для этого необходимо снять галку в блоке «Типы MIME» у пункта «Управлять ассоциациями файлов». Далее в блоке «Папки» появится возможность выбирать пункты и указывать им желаемые пути.Если убрать галку у пункта «Привязать к», то связь удалится и будет использоваться соответствующий каталог внутри префикса, то есть стандартный каталог Windows-пользователя: «./drive_c/users/$USER/Мои документы«, «./drive_c/users/$USER/Мои рисунки» и так далее. На иллюстрации ниже хорошо видно, что теперь для Windows-пользователя используются обычные каталоги, а не символические ссылки на каталоги Linux-пользователя.
Примечание: При удалении файлов из префикса они помещаются в «Корзину» Linux-пользователя.
winefile. Файловый менеджер Wine.
В некоторой степени является аналогом проводника Windows (explorer). Команда запуска:
WINEPREFIX=»/home/$USER/.wine_new» wine winefile
Функционал схож с файловыми менеджерами в дистрибутивах Linux: Dolphin, Thunar и прочих. Можно создавать каталоги, запускать исполняемые файлы, подключать сетевые диски и так далее. На иллюстрации изображён случай без «изоляции» префикса, поэтому виден корневой каталог Linux (диск Z:). «Корзина» для префикса является «Корзиной» Linux-пользователя.
Далее по статье рассматривается установка программ из установочных Windows-файлов (exe, msi). Установку из этих файлов можно осуществить через файловый менеджер Wine, но в данном случае будет рассмотрен только вариант установки с использованием терминала.
Wine. Установка и запуск программ.
В обычном случае алгоритм установки программ следующий:
Примечание: Не рекомендуется запускать программы из разделов с файловой системой NTFS, так как могут быть проблемы с правами на запуск и в целом это менее безопасно.
Пример установки клиента Steam.
Разворачиваем свиток «Test Results». В верхней половине будет отображён крайний отчёт пользователя, в котором он описывает свою историю запуска программы. Блок в нижней половине содержит в себе ссылки на отчёты других людей. Красной рамкой отмечена колонка, где можно переключать их.
Скачиваем клиент SteamSetup.exe.
Производим установку в конкретный ранее созданный префикс:
WINEPREFIX=»/home/$USER/.wine» wine «/home/$USER/Downloads/SteamSetup.exe«
wine «/home/$USER/Downloads/SteamSetup.exe« — запускаем посредством /opt/wine-staging/bin/wine исполняемый файл SteamSetup.exe, который расположен в пользовательском каталоге Downloads. Запускать исполняемые файлы можно из любого каталога Linux-пользователя, но потребуется указывать абсолютный путь.
После запуска SteamSetup.exe появится окно типичного мастера установки Windows:
В правой части иллюстрации видно, что программа устанавливается в указанный префикс, считая его ОС Windows.
Wine умеет преобразовывать создание ярлыков рабочего стола для Windows в ярлыки для рабочего стола и меню Linux. Тем самым можно будет запускать с ярлыка установленную в префикс Windows-программу. Файл ярлыка будет храниться здесь:
Набор иконок здесь:
Пример запуска программы напрямую из конкретного префикса:
WINEPREFIX=»/home/$USER/.wine» wine «/home/$USER/.wine/drive_c/Program Files (x86)/Steam/Steam.exe«
Примечание: Для той части пути, которая внути префикса, регистр не имеет значения.
Альтернативный вариант запуска:
WINEPREFIX=»/home/$USER/.wine» wine «C:/Program Files (x86)/Steam/Steam.exe«
Wine позволяет сократить путь до относительно префикса, имитируя путь в ОС Windows. Причём, как видно в примере, Wine поддерживает косую черту «/», не смотря на то, что в путях в Windows допустима только обратная косая черта «\».
WINEPREFIX=»/home/$USER/.wine» wine msiexec /i «/home/$USER/.wine/drive_c/EpicInstaller-10.15.2-unrealtournament.msi«
WINEPREFIX=»/home/$USER/.wine» wine start /unix «/home/$USER/.wine/drive_c/EpicInstaller-10.15.2-unrealtournament.msi«
Wine. Запуск bat-файлов («батников»).
Их запуск отличается от запуска exe-файлов. Пример запуска script.bat:
WINEPREFIX=»/home/$USER/.wine» wine start /unix «/home/$USER/.wine/drive_c/script.bat«
Wine. Удаление установленной Windows-программы.
Это можно сделать несколькими способами.
Удаление через Wine-программу uninstaller («Установка/удаление программ»):
WINEPREFIX=»/home/$USER/.wine» wine uninstaller
В списке выбрать программу, которую нужно удалить, и нажать кнопку «Изменить/Удалить». Запустится мастер установки-удаления программы.
Пример удаления программы Steam:
Регистр имени программы не имеет значения.
Можно удалить напрямую через специальную программу для удаления, которая входит в комплект установленной программы:
WINEPREFIX=»/home/$USER/.wine» wine «/home/$USER/.wine/drive_c/Program Files (x86)/Steam/uninstall.exe»
Альтернативный вариант через GUI. Метод тот же: удаление через программу «Установка/удаление программ», но через запуск из «Панели управления Wine». Для начала потребуется запустить «Панель управления Wine»:
WINEPREFIX=»/home/$USER/.wine» wine control
Альтернативный способ запуска напрямую:
WINEPREFIX=»/home/$USER/.wine» wine «/home/$USER/.wine/drive_c/windows/system32/control.exe»
В появившемся окне через ярлык запустить программу «Установка/удаление программ»:
Радикальным вариантом является удаление префикса целиком. Недостатком этого метода является то, что от программы останутся ярлыки и иконки. Придётся найти и зачистить их вручную.
Winetricks. Основы.
winetricks — конфигурационный shell-скрипт, позволяющий быстро и просто настроить различные параметры Wine через терминал и установить Windows-библиотеки и компоненты, указав соответствующие имена пакетов. Тем самым winetricks в основном дублирует функционал winecfg, но имеет дополнительные полезные возможности.
Скачивание из официального репозитория в
/.local/bin/? Это каталог для скриптов и исполняемых файлов пользователя. Размещение скрипта в этом каталоге позволит запускать winetricks через терминал для любого префикса без указания абсолютного пути до winetricks.
Если до этого в каталоге не было никаких исполняемых файлов, то потребуется перезапустить сеанс или скрипт профиля пользователя:
После чего winetricks можно будет запускать через терминал, но перед этим потребуется разрешить его выполнение.
Рекомендую назначить такой уровень прав:
sudo chmod 700
Активный пользователь получит право на чтение, запись и запуск, его группа — всё запрещено, остальным — всё запрещено.
При этом будет сохранена резервная копия предыдущей версии.
Откатиться на предыдущую версию:
Многие манипуляция с winetricks можно произвести в графическом режиме. Запуск winetricks в графическом режиме для конкретного префикса:
WINEPREFIX=»/home/$USER/.wine» winetricks
Не смотря на видимую удобность, графическим режим имеет ряд нюансов. Немало опций являются устаревшими и рудиментарными, а наиболее часто используемые опции скрываются в меню, которое, как ни странно, появляется после выбора пункта «Выберите путь для wine по умолчанию»:
В этом меню ключевыми являются две опции: «Установить библиотеку DLL или компонент Windows» и «Установить шрифт».
Опция «Установить библиотеку DLL или компонент Windows».
Здесь перечислены все библиотеки и компоненты, которые winetricks может скачать и инициализировать установку. Например, можно установить в префикс DirectX или отдельные его библиотеки. Не всё из представленного актуально и работоспособно, поэтому нужно действовать внимательно. Стоит отметить, что в рекомендациях на https://appdb.winehq.org/ попадаются советы с перечислением целой вереницы пакетов к установке, тут нужно учитывать, что люди нередко предлагают устанавливать всякую всячину для «подстаховки», поэтому так лучше не делать и постараться установить только действительно необходимые пакеты.
Скачивание производится с сайтов поставщиков (преимущественно Microsoft), так как лицензия многих библиотек и компонентов для ОС Windows не позволяет помещать их в общественные репозитории. Без winetricks пришлось бы самостоятельно перейти на сайт поставщика, найти в его дебрях нужный пакет, найти кнопку скачать (нередко, эта задача то ещё приключение) и наконец заполучить заветный установщик. Таковы реалии Windows на момент 2020 года.
Так же winetircks предоставляет возможность установить библиотеки или компонент напрямую через терминал:
WINEPREFIX=»/home/$USER/.wine» winetricks «название_пакета»
Пример установки Microsoft Media Foundation, который часто необходим для работоспособности видеороликов в играх на Unreal Engine 4:
WINEPREFIX=»/home/$USER/.wine» winetricks mf
В этой простой операции есть нюанс. Для установки ряда пакетов потребуется распаковщик cab-архивов, которые довольно широко применяются в Windows:
sudo apt install cabextract
После этого установка Microsoft Media Foundation пройдёт успешно:
Можно установить несколько пакетов в одну команду:
WINEPREFIX=»/home/$USER/.wine» winetricks d3dx9 vcrun2008 vcrun2010 vcrun2012 vcrun2013 vcrun2015
winetricks позволяет вывести список всех доступных для загрузки библиотек через терминал, что избавляет от необходимости искать в графическом интерфейсе:
winetricks dlls list
На иллюстрации видно, что в выводе присутствует описание пакетов. Это позволяет воспользоваться grep, чтобы показать только искомое, если известна часть его описания:
Опция «Установить шрифт».
Эта возможность требуется довольно часто. В префиксе не может быть шрифтов, которые защищены лицензией, но немало программ, которые требуют такие шрифты. К примеру, Arial и Times New Roman. Когда программа не находит в префиксе нужный шрифт и при этом не умеет использовать имеющиеся, то в ней попросту не будет отображаться текст. К примеру, это актуально для Epic Games Launcher.
Чаще всего требуется пакет шрифтов corefonts, в том числе для упомянутого Epic Games Launcher. В этот пакет как раз входят шрифты Arial, Courier и Times. Через терминал установка выглядит так:
WINEPREFIX=»/home/$USER/.wine/» winetricks corefonts
В префиксе шрифты хранятся по следующему пути:
/home/$USER/.wine/drive_c/windows/Fonts/
Куда winetricks скачивает пакеты перед их установкой?
Все скачанные с помощью winetricks пакеты складируются здесь:
Можно вывести весь список пакетов, которые находятся в кэше:
Winetricks. Настройка префикса.
Вывести список настроек префикса:
winetricks settings list Тоже самое в графическом режиме:
Из приведённого списка очевидно, что winecfg, который был рассмотрен ранее, предоставляет существенно более скромные возможности конфигурирования. Впрочем, многое из доступных опций не стоит трогать. Ниже рассмотрены часто применяемые и просто полезные.
Так как с графическим режимом всё понятно, далее речь пойдёт о настройке опций через терминал.
Переключить версию Windows:
WINEPREFIX=»/home/$USER/.wine» winetricks win7
По аналогии: winxp, win8, win10
Через winetricks намного удобнее и проще осуществить «изоляцию» префикса, которая рассмотрена в первой половине статьи. Основной её целью является убрать прямой доступ из префикса к домашнему каталогу Linux-пользователя и к корню системы (диск Z:). Это осуществляется следующей командой:
WINEPREFIX=»/home/$USER/.wine» winetricks sandbox
Это уберёт ассоциацию каталогов Windows-пользователя с домашними каталогами Linux-пользователя, а также удалит диск Z: (путь до корня Linux из префикса). Тем самым использование программ из такого «изолированного» префикса будет несколько более безопасным. При этом рабочие файлы Windows-программ будут сохраняться внутри префикса в соответствующих каталогах Windows-пользователя.
Углубление в функционал Wine.
wineserver.
Это специальный демон (служба, сервис), который выполняет роль ядра ОС Windows. Для каждого префикса запускается свой демон, что позволяет одновременно выполнять несколько программ из разных префиксов.
Порой программа может зависнуть намертво, здесь поможет жёсткий перезапуск wineserver. Эффект схож с нажатием кнопки Reset. В этом случае произойдёт жёсткая перезагрузка префикса (Windows), но не основной системы (Linux). Команда выглядит так:
wineboot.
Это программа, которая выполняет инициализацию, запуск и перезагрузку префикса. Так же она выполняет симуляцию завершения работы и перезапуска для программ, запущенных в префиксе.
Создание префикса через wineboot:
-i — инициализировать префикс.
-u — обновить конфигурацию префикс.
taskmgr — «Диспетчер задач».
Программа «Диспетчер задач» является аналогом системного монитора (gnome system monitor и подобных):
WINEPREFIX=»/home/$USER/.wine» wine taskmgr
Реестр Windows и его редактирование в Wine.
Файлы реестра system.reg, user.reg и userdef.reg создаются после конфигурирования префикса. Пример пути расположения:
Их можно редактировать любым текстовым редактором.
Для более удобной работы с реестром в Wine реализован аналог редактора реестра Windows — regedit. Для его запуска нужно выполнить:
WINEPREFIX=»/home/$USER/.wine» regedit
Альтернативный вариант:
WINEPREFIX=»/home/$USER/.wine» wine /home/$USER/.wine/drive_c/windows/regedit.exe
Примечание: Импорт рееста (куста) непосредственно из ОС Windows сломает префикс Wine.
Настройки, которыми можно управлять через winecfg и winetricks, сохраняются в реестр, а именно в HKEY_CURRENT_USER\Software\Wine:
Виртуальный рабочий стол в Wine.
Рабочий стол можно включить через winecfg:
На иллюстрации выше в отмеченном поле можно настроить разрешение вирутального рабочего стола. Можно установить такое же разрешение, как в Linux или такое, какое максимально поддерживает запускаемая программа. К примеру, игра Diablo 2 поддерживает разрешение максимум 800×600, поэтому для виртуального рабочего стола такое разрешение будет оптимальным.
Виртуальный рабочий стол запустится после повторного запуска winecfg или любой другой программы в префиксе. При этом запущенная программа будет размещена в рамках виртуального рабочего стола:
Как можно было заметить на иллюстрации, виртуальный рабочий стол поддерживает ярлыки для программ, установленных в префикс.
Виртуальный рабочий стол можно запустить принудительно для программы в конкретном префиксе без настраивания через winecfg:
WINEPREFIX=»/home/$USER/.wine» explorer /desktop=»name_desktop»,1920×1080 regedit
explorer — Wine-реализация проводника (файлового менеджера) Windows.
/desktop=»name_desktop»,1920×1080 regedit — создать рабочий стол с именем name_desktop и разрешением 1920×1080; запустить программу regedit — Wine-реализация программы редактирования реестра Windows.
Примечание: Можно запускать несколько виртуальных рабочих столов одновременно, но нужно дать им разные имена.
Так же вирутальным рабочим столом можно управлять через winetricks без использования winecfg.
Включение использования виртуального рабочего стола:
winetricks vd=1920×1080
Отключение:
winetricks vd=off
wineconsole.
Программа для работы с командной строкой в рамках префикса. Полезна для запуска программ и bat-скриптов так, как это было бы через интерпретатор командной строки Windows (cmd.exe), а так же для отладки.
Запуск командной строки Windows (cmd.exe) через wineconsole:
WINEPREFIX=»/home/$USER/.wine» wineconsole cmd
Отладка.
Отключить показ диалога падения программы в Wine:
WINEPREFIX=»/home/$USER/.wine» winetricks nocrashdialog
Ниже приведённые команды полезны для локализации проблем в работе программы. К примеру, по характерному выводу можно определить какой Windows-библиотеки не хватает для успешного запуска программы. Так же команды отладки необходимы для составления отчётов об ошибках, чтобы разработчики Wine знали о проблемах с той или иной программой.
Вывести ход выполнения программы game.exe в файл wine-log.txt, который будет сохранён в
/:
WINEPREFIX=»/home/$USER/.wine» wine «C:/games/my_game/game.exe» &> wine-log.txt
Вывести в файл wine-log.txt только ошибки и предупреждения в ходе выполнения программы:
WINEDEBUG=-all,+err,+warn WINEPREFIX=»/home/$USER/.wine» wine «C:/games/my_game/game.exe» &> wine-log.txt
Вывести в файл wine-setup-log.txt ход установки программы из установочного файла setup.exe:
WINEDEBUG=+text,+file,+reg,+relay WINEPREFIX=»/home/$USER/.wine» wine «C:/setup.exe» &> wine-setup-log.txt
Вывести в файл wine-dll-log.txt список Windows-библиотек (dll), используемых в процессе запуска программы:
WINEDEBUG=+loaddll WINEPREFIX=»/home/$USER/.wine» wine notepad &> wine-dll-log.txt
builtin — встроенная библиотека Wine, то есть созданная разработчиками Wine.
native — «родная» библиотека Windows.
Практика.
Установка русификатора для игры из Steam.
В виду того, что Proton (Steam Play) представляет собой модифицированный Wine, они хорошо совместимы между собой. Поэтому для Proton-префикса можно использовать стандартные инструменты Wine. В примере будет рассмотрена установка русификатора для Borderlands GOTY Enhanced. С нюансами подготовки игры к запуску можно ознакомиться здесь: https://www.protondb.com/app/729040
Игра по умолчанию будет установлена сюда:
Чтобы префикс игры создался, её необходимо запустить и выключить. По умолчанию префикс будет располагаться здесь:
То есть игра находится вне префикса. В этом особенность Proton.
Для начала установки, необходимо запустить установочный файл русификатора — Borderlands_TTL.exe.
WINEPREFIX=»/home/$USER/.local/share/Steam/steamapps/compatdata/729040/pfx» wine «/home/$USER/Downloads/Borderlands_TTL.exe«
Wine может предложить установить Mono и Gecko — отказываемся, для префикса игры это ни к чему.
Должно появиться окно мастера установки:
Мастер сообщит, что не может найти игру:
Это не удивительно, так как игра находится вне префикса. Здесь есть два варианта решения:
После завершения установки игра будет русифицирована.
Чуть-чуть хитростей.
Каждый раз прописывать путь до префикса и программы может быть довольно утомительно. Есть несколько способов это упростить.