Wine не открывает exe файлы

Обновлено: 07.07.2024

Рано или поздно может понадобиться запустить программы Windows на Linux. Для операционной системы Linux написано огромное количество программ, для решения одной определенной задачи, может быть даже несколько десятков программ. Но такая тенденция наблюдается только для широко распространенных задач, что же касается специализированных программ и игр, то тут ситуация совсем иная.

Программ, для решения узкоспециализированных задач, например, в той же сфере СЕО для Linux попросту нет, а игры начали появляться только последние несколько лет. Были и раньше простенькие игры с открытым исходным кодом, но популярные игры, класса ААА начали появляться только тогда, когда этой платформой заинтересовалась Valve. Но до сих пор ситуация с играми обстоит не так, как хотелось бы. Поэтому и возникает необходимость установки Windows программ в Linux.

Немного теории

Windows программы не могут запускаться просто двойным щелчком по исполняемому файлу. Формат исполняемых файлов Linux очень сильно отличается от Windows. Поэтому для их запуска необходимо использовать специальное программное обеспечение - wine. Название Wine образовано с помощью, почему-то популярного в мире свободного программного обеспечения способа - рекурсивный акроним, и расшифровывается как Wine is not emultor. И это правда, wine не является эмулятором.

Это программная оболочка, которая преобразует системные вызовы Windows программ в вызовы функций операционной системы Linux. Таким образом, wine представляет из себя прослойку между Windows программой и операционной системой Linux вместе с ее ядром и библиотеками.

Чтобы понять как работает Wine, нужно сначала сказать несколько слов о ядре Windows. У Windows, так же как и у Linux есть ядро. Как вы знаете ядро Linux состоит из одного файла и находится в папке boot. Ядро Windows совсем другое, по сути это набор dll библиотек, которые расположены в папке C:\windows\system32. Поэтому нам, чтобы заставить Windows программы работать в Linux достаточно реализовать dll библиотеки, которые нужны программе, так чтобы они вызывали необходимые нам функции из системы linux, что собственно и делает Wine. Но проект развивается очень медленно и разработчики не успевают реализовать все функции из системных библиотек Windows, поэтому работают далеко не все программы, особенно новые.

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

Основы использования Wine

Все файлы программ wine, установленные программы, библиотеки, файлы реестра, конфигурационные файлы находятся в домашнем каталоге, а точнее, в

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

/.wine это префикс, но мы можем создавать для каждой новой программы свой префикс и она будет работать только с ним. Чтобы задать префикс, с которым нужно работать wine используется переменная окружения WINEPREFIX, например:

Для разных программ может потребоваться различная архитектура системы, wine может запускать и 64 битные программы, но многим для правильной работы нужна архитектура х86.

Чтобы задать архитектуру используйте переменную WINEARCH. Например, для х86:

Также не создавайте папку для нового префикса с помощью mkdir или файлового менеджера, пусть программа сама создаст эту папку при своем первом запуске.


Запуск exe программ в Linux с помощью wine


На странице программы есть версия Wine, с которой она была протестирована, версия тестируемой программы, а также оценка. Оценка может быть Platinum, Gold, Silver или ниже, она зависит от того насколько хорошо программа работает:


Как видите, программа тестировалась с версией wine 5.0 и работала довольно неплохо. К тому же на странице есть ссылка на загрузку программы, так как она бесплатна. Если при запуске программы возникают сложности, то на странице winehq обычно сообщается что надо сделать чтобы программу всё-таки запустить.

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

$ wine /адрес/файла/программы.exe

Например, для программы Notepad++ надо выполнить:

Здесь я использую portable версию, её надо перед этим скачать и распаковать. Как видите, программа полностью работает:

Но как я уже говорил, нам придется запускать мало таких программ, большинство из них будут требовать функциональности, которая ещё не реализован в wine. Тогда нам придется заменить библиотеки Wine, на оригинальные библиотеки Windows.

Конечно, есть оболочки для Wine, которые автоматизируют этот процесс, например, Crossover, PlayOnLinux, Lutris и другие. Но мы рассмотрим ручной вариант.

Для установки компонентов Windows в wine существует специальный инструмент - winetricks. Устанавливать его лучше из сайта программы, так версия будет новее:

Чтобы установить нужный компонент достаточно передать имя этого компонента:

$ winetricks имя_компонента

На её странице сообщается, что программа работает, но для её работы надо установить компонент msxml и urlmon:

winetricks msxml6 urlmon

После установки этих пакетов программа надо добавить ключ в реестр, который описан на странице winehq. После этого установщик запуститься и установит программу.

После установки вы можете её запустить:


Выглядит всё не очень, но зато работает. Инструкции не обязательно искать только на winehq, это могут быть различные форумы, блоги и так далее.

fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub

Осталось понять, что такое richedit, и Microsoft TechNet нам любезно сообщает что это их API и состоит оно из Riched32.dll, это последняя версия, но раньше это была riched20.dll, уже понимаете какие библиотеки нужны?

Их можно установить с помощью winetricks, но это делать необязательно, можно и вручную. Скачайте библиотеки, найти их не составит труда с помощью Google. Только ищите версию для Windows XP.

Копируем библиотеку в наш префикс, в папку system32:

Для 64 битных библиотек используется папка syswow64, а поскольку мы указали архитектуру 32 бит нужно и библиотеки использовать соответствующие. Затем запустите winecfg и на вкладке библиотеки, в поле новое замещение для библиотеки наберите *riched32, затем добавить и *riched20 и опять добавить:


Все, теперь можете пробовать запускать программу. Если программа снова падает с ошибкой, смотрите дальше логи и ищите библиотеки, которых ей не хватает.

Таким образом, вы можете заменить много библиотек Wine. Можно запустить практически любую программу, написанную несколько лет назад и не требующую сверх новых технологий. Достаточно только заменить нужные библиотеки. Вы можете не только использовать winetricks или копировать библиотеки из интернета, но и брать их прямо из Windows. Точно не стоит заменять gdi32.dll, kernel32.dll, и user32.dll - эти библиотеки реализуют функции ядра Windows на самом низком уровне, и если их заменить, это только нарушит работу Wine. Наверное, есть и другие библиотеки, которые нельзя заменять, но это вычисляется только путем экспериментов.

Упрощённая установка exe в Linux

Вариант, который мы рассмотрели выше слишком сложный и не очень то подходит для новичков. Специально для таких ситуаций были придуманы различные программные решения вроде PlayOnLinux или CrossOver. Это оболочки над wine, которые уже знают какие библиотеки надо ставить для той или иной программы. Вы просто выбираете программу, выбираете установщик, а дальше программа сделает всё за вас сама.

Утилита Crossover поддерживает множество программ и работают они довольно неплохо, но единственный минус этой программы в том, что она платная. Программа PlayOnLinux бесплатная, но поддерживает намного меньше программ.

Запуск Windows программ в виртуальной машине

Если ни один из перечисленных выше способов вам не помог, осталось только последнее решение. Оно поможет, при условии, что у вас мощный компьютер. Вы можете установить виртуальную машину VirtualBox, затем установить туда Windows и уже там запускать вашу программу. Можно пойти ещё дальше и сделать из старого компьютера сервер, на котором будет запущена Windows, к которой вы сможете подключаться по VNC или RDP и делать там всё, что угодно. Это не совсем способы запуска exe в Linux, однако это решение будет работать почти всегда, где не будет работать wine.

Выводы

Теперь вы знаете как запустить exe на Linux. Не пренебрегайте инструментами упрощения установки вроде PlayOnLinux. Они очень сильно экономят ваше время, так как имеют уже готовые профили для многих программ. Экспериментируйте и пусть ваши программы работают без ошибок!

Не запускаются программы через ярлыки с рабочего стола
Установлена лицензионная Windows Vista Home Basic. С недавнего времени наблюдается неприятное.

В процессе "Подготовки рабочего стола" возникли ошибки с rundll32.exe, winmail.exe c кодом 0xc0000005
Никогда особо не возникало проблем с установкой Windows, но ситуация просто аховая. Приобрёл.

Мерцание рабочего стола, ошибка Explorer.exe
Сегодня возникла проблема, с которой я раньше не сталкивался: после включения ПК, появилось.

Стиль приложения и темы рабочего стола
При разных настройках тем рабочего стола, стиль Windows работает безупречно. Другие же стили.

Вообще что-то странное, у Вас там в исполняемом файле явно приложение Linux, а не windows, то о чем тогда вообще речь? astronom1987, точно! Мой косяк. Фигню сморозил. Поставил Notepad++ x64. Вот его линк:

Причём, это линк на линк.

Ещё один нюанс. Я ставил пакет winehq-stable, который уже сам всё остальное подтянул.

Они изначально такими создаются.
И не запускаются. Хотя через lnk который по сути ведет нга .dekstop нормально запускается. Чертовщина какаято.

А у самого файла *.desktop какие права?

Права пользователя естественнго. А на счет названия то это дебильна локализация тогдашних игр. Сама игра в оригинале называется Gruntz игра представляет себя головоломку. Exec=wine /home/alexandr-5/.wine/drive_c/Games/Gruntz/Gruntz.exe Такой командой игра запускается? Если нет, то что пишет?

Решение

Да в принципе проблема была сзвязана с тем что стояла нестабильная версия Wine. Щас стоит стабильная и все норм.

Не запускаются exe приложения
Здравствуйте. У меня такая проблема. Перестали запускаться exe приложения. Сначало перестала.

Как программно нажать клавишу F5 для обновления рабочего стола из своего приложения?
Есть ли метод или функция эмулирующая нажатие клавиши F5 для обновления рабочего стола? Или.

Периодически не запускаются exe приложения
Здравствуйте. Собрал компьютер. Материнская плата: Colorfull C.A320M-K PRO V14 iGame Процессор.

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

Вирус , не запускаются exe файлы ( 32 разрядные приложения)
Здравствуйте , проблема такова - не запускаются не какие приложения ехе 32 разрядные , в безопасном.

image

Всем привет!
Прочел статью про «Все тонкости настройки Wine», оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому.

В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн.
Скорее всего данный пост будет интересен новичкам и обычным пользователям GNU\Linux. Тем не менее добротные советы от специалистов не будут лишними.

Что такое вайн думаю объяснять нет смысла. Хочу лишь показать несколько трюков при работе с ним.

Префиксы

С их помощью вы можете устанавливать приложения именно туда куда вы их хотите установить, а не в дефолтный .wine. Даже если что то пойдет не так, достаточно удалить тот префикс, в котором произошла ошибка, при этом все другие приложения\префиксы (предположим, что они настроенные) не пострадают.

То есть каждый созданный вами префикс можно рассматривать как отдельный wine – он независим от других префиксов. Или, для еще большей простоты, воспринимайте каждый созданный префикс, как отдельно установленную винду.

Теперь немного практики:
Сейчас мы создадим папку Gamez, в ней мы создадим префикс lib в который установим несколько библиотек. Эти библиотеки все равно пригодятся потом, поэтому пусть кешируются.

mkdir ./Gamez
env WINEPREFIX=$HOME/Gamez/lib wine winecfg
env WINEPREFIX=$HOME/Gamez/lib winetricks directx9 vcrun2005 vcrun2008 vcrun6
env WINEPREFIX=$HOME/Gamez/lib wine winecfg

Последней командой мы опять вызвали окно конфигуратора wine. Просто перейдите на вкладку «Библиотеки» и убедитесь, что все установилось. После этого выполните:

wine winecfg — откроется конфигуратор wine (не из префикса), проверьте ту же вкладку. Видите! Здесь никаких библиотек. Значит он цел и невредим.

Как установить несколько разных версий wine?

Для решения этой задачи придется собирать wine из исходников. При сборке просто используем префикс для дефолтной установке. Примерно как здесь:

./configure prefix=/path/to/install/directory && make
sudo make install

AppDB

Обязательно используйте appdb для поиска информации по установке приложения, возможно стаф, который вы устанавливаете, уже установили и расписали все подводные камни.

Наводим порядок в домашнем каталоге

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

image

Замените стандартный путь к моим документам, на желаемое место для хранения сейвов. У меня, к примеру, этот путь ведет в папку с игрой.

Использование последних версий wine

Wine такая штука, чем новее тем лучше! С помощью следующей команды вы всегда будете иметь последнею версию wine (для Ubuntu-подобных дистрибутивов):

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update

После выполнения этих команд ищите последнею версию wine в synaptic.

Установка winetricks

Если по каким-либо причинам у вас до сих пор нет winetricks, то завести его в хозяйстве можно так:

Как установить MSI файл?

Это можно сделать двумя способами: wine msiexec /i whatever.msi

Альтернативный способ: wine start whatever.msi

The file foo.exe is not marked as executable… — Что это значит?

chmod a+x ./patch/you/exe.file

если же файл находится на диске, то должна помочь вот эта команда:

mount -o remount,mode=0777,exec /media/cdrom

Как вывести содержимое отладки в отдельный файл?

/.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

Вы можете просто их игнорировать, это информация для разработчиков.

Через вайнтрикс можно установить 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

После выхода из игры не восстанавливается разрешение экрана

Должно помочь: xrandr -s 0

Как попасть в реестр wine?

wine regedit — Если используются префиксы укажите путь в команде.

Нуждается ли wine в отдельной установке драйверов?

Нет. Wine – это не эмулятор компьютера, он лишь переводит вызовы Windows API в понятные линуксу команды.

Безопасно ли запускать wine от root?

Никогда не запускайте wine от root пользователя.

Если это уже случилось измените владельца


sudo chown -R $USER:$USER .wine

Техника безопасности при использовании wine

Вот несколько советов, которые помогут вам повысить безопасность:

  • Никогда не запускайте программы с подозрительных сайтов
  • Никогда не используйте root пользователя для запуска приложений!
  • Используйте антивирусный сканер для запускаемых приложений, например ClamAV. Или хотя бы проверяете экзешники на virustotal
  • Попробуйте удалить wine диск Z:, который указывает по умолчанию на корневой каталог. В качестве обходного пути запускать программы из

Файл .xsession-errors забивает мусором все дисковое пространство. Что делать? (рецепт от --=XliN=--)

/.xsession-errors &> /dev/null
[[ "$(stat -c %s

/.xsession-errors)" -ge "52428800" ]] && echo >

/.xsession-errors
done

Добавьте его в автозагрузку, и установите следующий пакет (он необходим для работы скрипта).
apt-get install inotify-tools

Изображение пользователя RatZhur.

Доброго времени суток, у меня такая проблемка, стоит на ubuntu 10.10 Wine. Когда открываю *exe файлы, лежащие на компе то вылетает ошибка:
"the file is not marked as executable. If this was downloaded or copied from an untrusted source, it may be dangerous to run. For more detalis, read about the executable bit."
А если скопировать файл на флэшку, диск или открыть его по сети с другого компа, то он открывается без проблем, как сделать чтобы все локальные файлы открывались?

М-да. Ну скажи ему, что он исполнимый. Правой кнопкой мыши по нему и в права.

Изображение пользователя RatZhur.

не получается, я ставлю галку, она тут же пропадает.

Почему я должен заниматься магией, чтобы узнать, что происходит? Ладно, попробую слегка пошаманить. Владелец файла кто? Не root часом? Загрузить файловый менеджер из-под root и сменить владельца на себя. Потом сказать файлу, что он executable. Оно?

Изображение пользователя RatZhur.

И что так надо с каждым файлом делать? Почему если файл не на компе то он открывается без проблем? Не порядок.

Изображение пользователя DarkneSS.

А нечего было файлы под рутом копировать!

Изображение пользователя tigris.

там же все написано, учите английский )))

Изображение пользователя RatZhur.

ну там написано что файл не может быть выполнен и все.

Изображение пользователя tigris.

любой файл с локального компьютера не открывается? как ты их туда копируешь?, или как монтируешь локальный диск? подробнее пожалуйста.
ну там написано что файл не может быть выполнен и все. - For more detalis, read about the executable bit. - вот!

А кто-нибудь знает, что не хватает вайну, если он при запуске проги вываливает окошко: Microsoft Visual C++ Runtime Error?
При этом через winetricks установлены vcrun6, vcrun2005. Библиотеки (dll) никакие не просит при запуске, просто вываливается прога с этой ошибкой и всё.

А запустить в терминале и посмотреть, чего ему не хватает, религия не позволяет?

Религия такова, что изначально это всё запускается в терминале.

Изображение пользователя Жюстина.

А раздел то как монтируется? может там c него запрещён запуск исполняемых файлов вообще. -noexec

Перемонтировал раздел (ext3) с опцией noexec, *.exe (не тот проблемный, другой) запустился, хоть и сказал:
err:virtual:map_image failed to set 60000020 protection on section .text, noexec filesystem?
Ещё и права на запуск все убрал, т.е. 644 установил. Так что эта опция не преграда запуска по вайном.

Изображение пользователя Жюстина.

Да вайну в принципе-то всё равно какие права у ехе файла, лишь бы чтение было разрешено. Просто тут чаго-то про это заговорили. )))

Хотя судя по тому, что есть результат из консоли, а главное такой: "the file is not marked as executable. If this was downloaded or copied from an untrusted source, it may be dangerous to run. For more detalis, read about the executable bit.", это ж говорит о том что его пытаются запустить как обычный исполняемый файл линукса, а не: wine 'филик.ехе'

Вероятнее всего. Вайн такие тексты не выдаёт.

Изображение пользователя tigris.

запуск вин-приложений осуществляется так - сначала сама система запускает файл, а когда видит что он под винду, открывает вайн и подсовывает ему этот файл. имхо как то так. посему и говорит, что не установлен executable bit.

Изображение пользователя Жюстина.

Консоли вообще всё равно, она делает так как написано, а кде подсовывает файлик той программе которая закреплена за определённым mime-type )))

Изображение пользователя tigris.

не-не-не, было так - скачиваю файл exe-шный с инета, открываю через dolphin пишет что не исполняемый, делаю chmod +x somefile.exe, и нормально открывается )))

з.ы. я кстати про консоль ничего не писал.

Изображение пользователя Жюстина.

У меня по умолчанию почему-то они все исполняемые, поменяла права чтоб проверить, и всё равно открываются вайном.

Изображение пользователя tigris.

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

Читайте также: