Возможности, предоставляемые 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-vanilla — сборка оригинального Wine от WineHQ без каких-либо изменений.
У компании Etersoft есть ещё одна — коммерческая — версия: WINE@Etersoft уже c «закрытыми» патчами, которая также совместима с дистрибутивами ALT Linux (впрочем, как и с другими дистрибутивами Linux).
Обновления Wine
Работа Wine в 64-битных дистрибутивах
В 64-битных дистрибутивах пакет wine, в отличии от 64-битного Windows, поддерживает только 64-битные Windows приложения.
Для понимания того, какое это приложение, можно пояснить, что в 64-битном Windows 64-битные приложения ставятся в каталог «Program Files», а 32-битные в «Program Files (x86)»
Как известно, большинство Windows-приложений на сегодня — 32-битные.
Поэтому в большинстве случаев для использования Wine в 64-битной ОС надо ставить не пакет wine, а пакет i586-wine (или i586-wine-vanilla); при установленном eepm может помочь команда epm play i586-wine
i586-wine и i586-wine-vanilla — это перепакованный 32-битный Wine для работы в 64-битной среде по технологии arepo.
Для его установки необходимо убедиться, что подключён репозиторий для псевдоархитектуры x86_64-i586.
Например, для ветки p10 команда apt-repo, помимо других строчек, должна в своём выводе иметь следующую строчку (например, в /etc/apt/sources.list.d/alt.list):
rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/x86_64-i586 classic
А после этого установить из 32-битных пакетов, например:
apt-get install i586-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:usrlocalbinwinenative" xdg-open "%1"
Должно получиться так:

После этого настроенный тип файла будет открываться в программе по умолчанию в Линуксе.
Для настройки нестандартных для Linux файлов — например doc/docx — настройка немного отличается. Нужно полностью создать следующую цепочку:
HKEY_CLASSES_ROOTdocfileshellopencommand
с аналогичным значением: «Z:usrlocalbinwinenative» xdg-open «%1». После этого создать ветку HKEY_CLASSES_ROOTdoc со значением 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)
Ссылки по теме
- Установка WINE@Etersoft на 64-битные ОС
- Несколько архитектур в одной ОС (Arepo/Biarch)
- 32-битный OpenGL на 64-битной системе с драйвером Intel
- 32-битный OpenGL на 64-битной системе с драйвером NVIDIA
- Описание WINE@Etersoft
- Краткий FAQ по Wine
- Документация по Wine на русском языке
- Наиболее полная документация по Wine (на английском языке)
- Русский Wine (Русский Wiki по Wine)
- Готовим Wine в домашних условиях
- Практические вопросы > WINE
- Практические вопросы > Бизнес и бухгалтерия под Линукс
- Запуск программ
- winetricks: wget, установка
- Ассоциация файлов с родными приложениями Linux: [1], [2]
- Q4Wine
- опыт настройки одновременной работы WINE32 и WINE64 (с ручной установкой wine64 рядом с пакетным i586-wine)
-
rfe
- Newbie
- Posts: 4
- Joined: Sat Jul 10, 2021 10:13 am
Use Dynamic Data Exchange with Wine
Hi, this is a crosspost from superuser.com, since I think this question fits here better and I did not find a rule forbidding it.
I have a very old Windows application that was written in Visual Basic 6.0 and performs communication via Dynamic Data Exchange (DDE) between the main application and a sub-application (second .exe) which is started by the main application.
I want to run this application with Wine. So far, I have installed wine and winetricks and have installed the VB6 dependencies via winetricks vb6run. Everything is running flawlessly except for when the DDE communication is attempted.
The main application is able to start the sub-application, but both application raise an error («Foreign application won’t perform DDE method or operation» for the main app).
I am using Manjaro Linux with wine-6.10.
How can I debug this problem and enable the applications to talk via DDE?
-
rfe
- Newbie
- Posts: 4
- Joined: Sat Jul 10, 2021 10:13 am
Re: Use Dynamic Data Exchange with Wine
Post
by rfe » Mon Jul 12, 2021 2:39 pm
Thanks for the reply. Sadly, this is an unpublished application of a programmer that wishes to leave Windows behind. The console output is very brief.
I could take a look at the source code though, sorry for not mentioning that.
Is DDE something that usually works with Wine?
-
rfe
- Newbie
- Posts: 4
- Joined: Sat Jul 10, 2021 10:13 am
Re: Use Dynamic Data Exchange with Wine
Post
by rfe » Tue Aug 10, 2021 6:21 am
Hi again,
I think I misunderstood something before, I now pasted the console output of wine here. As you can see, the only DDE related message is related to DdeUninitialize at the very bottom.
I also tried debugging the problem with a simpler example. For this purpose, I downloaded a DDE Sample from this VB forum thread. I can supply the two EXE files if someone wants that. The applications are able to communicate on a Windows PC, but unable to communicate via Wine. On Linux, the client application crashes with the message «Run-time error ‘-2147024882 (8007000e)’: Out of memory». The server application displays a LinkError. The full console outputs of the programs can be found here (client) and here (server). There are more DDE related messages in these logs.
I also tried to at least find the DLL which causes the problems to attempt to debug that, but I only found the «~/.wine/drive_c/windows/system/ddeml.dll» and renaming that to something else doesn’t change the behaviour at all, so I guess that isn’t it?
-
jkfloris
- Level 12
- Posts: 2482
- Joined: Thu Aug 14, 2014 10:10 am
Re: Use Dynamic Data Exchange with Wine
Post
by jkfloris » Fri Aug 13, 2021 3:51 pm
I can supply the two EXE files if someone wants that.
No idea if I can get the programs to work, but I want to try.
I also tried to at least find the DLL which causes the problems to attempt to debug that, but I only found the «~/.wine/drive_c/windows/system/ddeml.dll» and renaming that to something else doesn’t change the behaviour at all, so I guess that isn’t it?
If you don’t want to use a dll file, use:
Code: Select all
WINEDLLOVERRIDES=ddeml=d wine <program.exe>
-
rfe
- Newbie
- Posts: 4
- Joined: Sat Jul 10, 2021 10:13 am
Re: Use Dynamic Data Exchange with Wine
Post
by rfe » Tue Aug 17, 2021 4:13 am
jkfloris wrote: ↑Fri Aug 13, 2021 3:51 pm
I can supply the two EXE files if someone wants that.
No idea if I can get the programs to work, but I want to try.
Thanks for the offer! I uploaded the two files here. I hope the choice of file sharer is okay. The link will stay active for 30 days. Keep in mind that I did not create the application and that the source can be found in my post above.
Содержание
- Причины возникновения ошибки
- Решение проблемы
- Способ 1: отключение игнорирования DDE
- Способ 2: отключение режима совместимости
- Способ 3: Очистка реестра
- Способ 4: отключение аппаратного ускорения
- Способ 5: отключение надстроек
- Способ 6: сброс сопоставлений файлов
- Способ 7: загрузка обновлений Windows и переустановка пакета Microsoft Office
- Вопросы и ответы
Несмотря на то, что, в целом, программа Microsoft Excel отличается довольно высоким уровнем стабильности работы, с этим приложением тоже иногда случаются проблемы. Одной из таких проблем является появление сообщения «Ошибка при направлении команды приложению». Оно возникает при попытке сохранить или открыть файл, а так же провести с ним некоторые другие действия. Давайте разберемся, чем вызвана данная проблема, и как её можно устранить.
Причины возникновения ошибки
Какие же основные причины вызывают данную ошибку? Можно выделить следующие:
- Повреждение надстройки;
- Попытка получить доступ к данным активного приложения;
- Ошибки в системном реестре;
- Повреждение программы Excel.
Решение проблемы
Пути устранения данной ошибки зависят от её причины. Но, так как в большинстве случаев, установить причину труднее, чем её ликвидировать, то более рациональным решением является методом проб попытаться найти верный способ действий из тех вариантов, которые представлены ниже.
Способ 1: отключение игнорирования DDE
Чаще всего, устранить ошибку при направлении команды удается путем отключения игнорирования DDE.
- Переходим во вкладку «Файл».
- Кликаем по пункту «Параметры».
- В открывшемся окне параметров, переходим в подраздел «Дополнительно».
- Ищем блок настроек «Общие». Снимаем галочку около параметра «Игнорировать DDE-запросы от других приложений». Жмем на кнопку «OK».
После этого, в значительном числе случаев, проблема устраняется.
Способ 2: отключение режима совместимости
Ещё одной вероятной причиной, описанной выше проблемы, может быть включенный режим совместимости. Для того, чтобы отключить его, нужно последовательно проделать указанные ниже шаги.
- Переходим, с помощью проводника Windows, или любого файлового менеджера, в каталог размещения пакета программ Microsoft Office на компьютере. Путь к нему выглядит следующим образом:
C:Program FilesMicrosoft OfficeOFFICE№. № — это номер офисного пакета. Например, папка, где хранятся программы Microsoft Office 2007, будет называться OFFICE12, Microsoft Office 2010 — OFFICE14, Microsoft Office 2013 — OFFICE15, и т.д. - В папке OFFICE ищем файл Excel.exe. Кликаем по нему правой кнопкой мыши, и в появившемся контекстном меню выбираем пункт «Свойства».
- В открывшемся окне свойств Excel, переходим во вкладку «Совместимость».
- Если стоят флажки напротив пункта «Запустить программу в режиме совместимости», или «Выполнять эту программу от имени администратора», то снимаем их. Жмем на кнопку «OK».
Если галочки в соответствующих пунктах не установлены, то продолжаем искать источник проблемы в другом месте.
Способ 3: Очистка реестра
Одной из причин, которая может вызвать ошибку при направлении команды приложению в Excel, являются неполадки в реестре. Поэтому, нам его необходимо будет почистить. Перед тем, как приступать к дальнейшим действиям, для того чтобы подстраховать себя от возможных нежелательных последствий данной процедуры, настойчиво рекомендуем создать точку восстановления системы.
- Для того, чтобы вызвать окно «Выполнить», на клавиатуре вводим комбинацию клавиш Win+R. В открывшееся окно, вводим команду «RegEdit» без кавычек. Жмем на кнопку «OK».
- Открывается Редактор реестра. В левой части редактора расположено древо каталогов. Перемещаемся в каталог «CurrentVersion» по следующему пути:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion. - Удаляем все папки, расположенные в директории «CurrentVersion». Для этого, кликаем по каждой папке правой кнопкой мыши, и в контекстном меню выбираем пункт «Удалить».
- После того, как удаление выполнено, перезагружаем компьютер и проверяем работоспособность программы Excel.
Способ 4: отключение аппаратного ускорения
Временным решением проблемы может стать отключение аппаратного ускорения в Excel.
- Переходим в уже знакомый нам по первому способу решения проблемы раздел «Параметры» во вкладке «Файл». Опять кликаем по пункту «Дополнительно».
- В открывшемся окне дополнительных параметров Excel, ищем блок настроек «Экран». Устанавливаем галочку около параметра «Отключить аппаратное ускорение обработки изображений». Кликаем по кнопке «OK».
Способ 5: отключение надстроек
Как уже говорилось выше, одной из причин данной проблемы может быть неисправность какой-то надстройки. Поэтому, как временную меру, можно использовать отключение надстроек Excel.
- Опять переходим, находясь во вкладке «Файл», в раздел «Параметры», но на этот раз кликаем по пункту «Надстройки».
- В самой нижней части окна, в выпадающем списке «Управление», выбираем пункт «Надстройки COM». Жмем на кнопку «Перейти».
- Снимаем галочки со всех надстроек, которые указаны в списке. Жмем на кнопку «OK».
- Если после этого, проблема исчезла, то опять возвращаемся в окно надстроек COM. Устанавливаем галочку, и жмем на кнопку «OK». Проверяем, не вернулась ли проблема. Если все в порядке, то переходим к следующей надстройке, и т.д. Ту надстройку, на которой ошибка вернулась, отключаем, и больше не включаем. Все остальные надстройки можно включить.
Если же после выключения всех надстроек проблема осталась, то это означает, что надстройки можно включить, а ошибку следует устранить другим способом.
Способ 6: сброс сопоставлений файлов
Для решения проблемы можно также попытаться сбросить сопоставления файлов.
- Через кнопку «Пуск» переходим в «Панель управления».
- В Панели управления выбираем раздел «Программы».
- В открывшемся окне, переходим в подраздел «Программы по умолчанию».
- В окне настроек программ по умолчанию выбираем пункт «Сопоставление типов файлов и протоколов конкретных программ».
- В списке файлов выбираем расширение xlsx. Жмем на кнопку «Изменить программу».
- В открывшемся списке рекомендуемых программ, выбираем Microsoft Excel. Делаем клик по кнопке «OK».
- В случае, если программы Excel нет в списке рекомендуемых программ, жмем на кнопку «Обзор…». Переходим по тому пути, о котором мы говорили, обсуждая способ решения проблемы отключением совместимости, и выбираем файл excel.exe.
- Аналогичные действия проделываем и для расширения xls.
Способ 7: загрузка обновлений Windows и переустановка пакета Microsoft Office
Не в последнюю очередь виной появления данной ошибки в Excel может быть отсутствие важных обновлений Windows. Нужно проверить, все ли доступные обновления загружены, и в случае необходимости закачать недостающие.
- Опять открываем Панель управления. Переходим в раздел «Система и безопасность».
- Кликаем по пункту «Центр обновления Windows».
- В случае, если в открывшемся окне присутствует сообщение о наличии обновлений, жмем на кнопку «Установить обновления».
- Ждем, пока обновления будут установлены, и перезагружаем компьютер.
Если ни один из перечисленных методов не помог решить проблему, то возможно есть смысл задуматься о переустановке пакета программ Microsoft Office, а то и о переустановке операционной системы Windows в целом.
Как видим, довольно много возможных вариантов по устранению ошибки при направлении команды в программе Excel. Но, как правило, в каждом конкретном случае существует только одно верное решение. Поэтому, для того, чтобы ликвидировать эту проблему, придется методом проб использовать различные способы устранения ошибки, пока не будет найден единственно верный вариант.






























