In my current setup I’m running an up to date archlinux build, with deepin desktop environment on an ASUS Vivobook Pro 15. Connected to this machine I have two hdmi displays, one over the hdmi port, the other over an usb-c to hdmi port (displaylink over usb-c).
When I have the displays disconnected on start and plug them in later all seems to be fine, except for sometimes my custom profile not beeing remembered.
But when I start the machine with both screens connected the loading screen (black with loading circle) shows for about a minute, with the internal laptop screen showing the desktop background already. Then after that minute it all just seems to work.
I’ve looked into the logs:
Oct 18 20:47:04 ArchMachinePro dbus-daemon[1076]: Activating service name='com.deepin.dde.desktop'
Oct 18 20:46:57 ArchMachinePro com.deepin.daemon.Power[1076]: org.freedesktop.DBus.Error.ServiceUnknown:The name org.freedesktop.miracle.wifi was not provided by any .service files
Oct 18 20:46:57 ArchMachinePro com.deepin.daemon.Power[1076]: org.freedesktop.DBus.Error.ServiceUnknown:The name org.freedesktop.miracle.wfd was not provided by any .service files
Oct 18 20:46:54 ArchMachinePro systemd-coredump[1911]: Process 1907 (dde-desktop) of user 1000 dumped core.
Stack trace of thread 1907:
#0 0x00007f450f281b17 xcb_ewmh_get_client_list (libxcb-ewmh.so.2)
#1 0x00005577eeb1a0eb n/a (dde-desktop)
#2 0x00005577eeb3d48a n/a (dde-desktop)
#3 0x00005577eeb3dc0c n/a (dde-desktop)
#4 0x00005577eeb401e7 n/a (dde-desktop)
#5 0x00005577eeb354c7 n/a (dde-desktop)
#6 0x00005577eeb33fac n/a (dde-desktop)
#7 0x00005577eeb18fbd main (dde-desktop)
#8 0x00007f450c442f6a __libc_start_main (libc.so.6)
#9 0x00005577eeb1967a n/a (dde-desktop)
Stack trace of thread 1908:
#0 0x00007f450c50dd4b __poll (libc.so.6)
#1 0x00007f4509bf28e0 n/a (libxcb.so.1)
#2 0x00007f4509bf4679 xcb_wait_for_event (libxcb.so.1)
#3 0x00007f44f2af085a n/a (libQt5XcbQpa.so.5)
#4 0x00007f450ce22fcb n/a (libQt5Core.so.5)
#5 0x00007f450ae0e08a start_thread (libpthread.so.0)
#6 0x00007f450c51824f __clone (libc.so.6)
Stack trace of thread 1909:
#0 0x00007f450c50dd4b __poll (libc.so.6)
#1 0x00007f450b4faed3 n/a (libglib-2.0.so.0)
#2 0x00007f450b4fafae g_main_context_iteration (libglib-2.0.so.0)
#3 0x00007f450d061cd1 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5)
#4 0x00007f450d00548b _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5)
#5 0x00007f450ce1e27e _ZN7QThread4execEv (libQt5Core.so.5)
#6 0x00007f450d805376 n/a (libQt5DBus.so.5)
#7 0x00007f450ce22fcb n/a (libQt5Core.so.5)
#8 0x00007f450ae0e08a start_thread (libpthread.so.0)
#9 0x00007f450c51824f __clone (libc.so.6)
Oct 18 20:46:54 ArchMachinePro systemd[1]: Started Process Core Dump (PID 1910/UID 0).
Oct 18 20:46:54 ArchMachinePro kernel: dde-desktop[1907]: segfault at 557700000000 ip 00007f450f281b17 sp 00007ffdf2539ee0 error 4 in libxcb-ewmh.so.2.0.0[7f450f27c000+b000]
Oct 18 20:46:54 ArchMachinePro com.deepin.dde.desktop[1076]: 20171018.20:46:54.725[Debug][CanvasGridView::initUI 1277 0x5577f08fab50 ] qApp->primaryScreen()->availableGeometry() QRect(0,0 1920x1026)
Oct 18 20:46:54 ArchMachinePro com.deepin.dde.desktop[1076]: 20171018.20:46:54.725[Debug][CanvasGridView::initUI 1276 0x5577f08fab50 ] qApp->primaryScreen() QScreen(0x7f44ec005d80, name="HDMI2")
Oct 18 20:46:54 ArchMachinePro com.deepin.dde.desktop[1076]: 20171018.20:46:54.725[Debug][CanvasGridView::initUI 1275 0x5577f08fab50 ] Display::instance()->primaryScreen() QScreen(0x7f44ec005d80, name
Oct 18 20:46:54 ArchMachinePro dbus-daemon[1076]: Successfully activated service 'com.deepin.dde.desktop'
Oct 18 20:46:54 ArchMachinePro com.deepin.dde.desktop[1076]: 20171018.20:46:54.715[Debug][main 50 0x5577f08fab50 ] start "dde-desktop" ""
Oct 18 20:46:54 ArchMachinePro com.deepin.dde.desktop[1076]: 20171018.20:46:54.715[Warning][Dtk::Widget::DApplicationPrivate::loadTranslator 245 0x5577f08fab50 ] "dde-desktop" can not find qm files
Oct 18 20:46:54 ArchMachinePro com.deepin.dde.desktop[1076]: 20171018.20:46:54.715[Warning][Dtk::Widget::DApplicationPrivate::loadTranslator 245 0x5577f08fab50 ] "dtkwidget2" can not find qm files
Oct 18 20:46:54 ArchMachinePro dbus-daemon[1076]: Activating service name='com.deepin.dde.desktop'
This is only happening with two external displays connected (so a total of 3 displays with internal laptop display included). Disconnecting either of them makes the desktop boot as expected.
О 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
В случае, когда пакет i586-wine был установлен отдельно, могут не подтянуться некоторые 32-х битные библиотеки (в основном 32-х битные графические драйвера). Это легко исправить выполнением следующей команды:
epm play i586-fix
Основы по использованию Wine
Префиксы
Wine управляет префиксами (prefix), которые можно назвать отдельными экземплярами ОС Windows.
- Стандартный префикс располагается в /home/$USER/.wine.
- Префикс содержит в себе файлы реестра, каталоги, набор библиотек и программ, расположенных по той же структуре, как и в оригинальной Windows.
-
- dosdevices — в каталоге располагаются символические ссылки на каталоги, которые имитируют Windows-тома (диски). Тома обозначаются латинской буквой. К примеру, системный том Windows по умолчанию обозначается «C:».
- drive_c — условный том «C:», в котором располагаются компоненты Windows.
-
- .update-timestamp — метка времени.
- system.reg, user.reg и userdef.reg являются файлами реестра Windows.
- По умолчанию создаются 64-х битные префиксы.
- Компоненты эталонного префикса, из которого создаются все прочие создаваемые пользователем префиксы, находятся в /usr/lib64/wine/x86_64-windows/.
- Wine-префиксы на жаргоне называют «бутылками».
Особенности и ограничения префиксов
- Название префикса может быть любым, но для избежания затруднений следует придерживаться следующего:
- Название префикса принято начинать с .wine. Пример: .wine_nalogul. В этом случае сразу понятно, что это Wine-префикс и что в него установлена программа Налогоплательщик ЮЛ.
- Название должно содержать только латинские буквы и арабские цифры. Из символов можно применять знак точки, расположенный в самом начале названия, что означает скрытый каталог.
- Название не должно содержать пробелы, иначе путь придётся экранировать кавычками, чтобы интерпретатор мог корректно его обработать. В противном случае можно легко столкнуться со следующей ошибкой: wine: invalid directory in WINEPREFIX: not an absolute path
- Можно создавать префиксы в любых желаемых каталогах, принадлежащих пользователю.
- Ограничений по количеству префиксов нет.
- Категорически недопустимо создание префиксов с правами суперпользователя. Это крайне небезопасно — программы в префиксе потенциально получают доступ ко всем файлам системы. Так же обычный пользователь не сможет взаимодействовать с префиксом, так как им будет владеть суперпользователь.
- Wine поддерживает одновременную работу множества Windows-программ, запущенных в одном или нескольких префиксах.
- Не смотря на то, что Wine позволяет запускать исполняемые файлы Windows-программ из любого места пространства пользователя, правильнее это делать, разместив исполняемый файл внутри префикса. Оптимальным вариантом будет размещение в его корневом каталоге: home/$USER/.wine/drive_c. Такой подход связан с тем, что некоторые Windows-программы становятся неработоспособными, если расположены вне пространства префикса. Поэтому лучше предупредить возникновение подобных проблем и располагать исполняемые файлы внутри префикса.
- Крайней нежелательно размещать префикс на разделе с файловой системой NTFS (основная файловая система OC Windows). Данная файловая система не поддерживает систему прав и атрибутов Linux, что приведёт к проблемам с запуском программ.
- НЕДОПУСТИМО устанавливать в префикс Windows-драйвера для видеокарт, переферийных устройств, звуковых карт и подобного оборудования. Потенциально это может привести к сбою устройства, а в случае таких устройств, как мышь и клавиатура — полной неработоспособности.
- Wine-префикс не предоставляет существенной изоляции Windows-процессов от пространства Linux-пользователя, поэтому не стоит пытаться запускать вредоносные программы для Windows, так как потенциально они способны нанести вред Linux-системе. К примеру, запущенный в префиксе вшифровальщик может зашифровать не только префикс, но и выйти за его пределы, зашифровав все каталоги и файлы, принадлежащие Linux-пользователю, так как все процессы, запущенные в префиксе, выполняются с правами пользователя.
- Настоятельно не рекомендуется устанавливать всё в один префикс, оптимальнее создавать новый под каждую программу. Это особенно критично, если для работы той или иной программы требуется установить несвободный Windows-компонент. В таком случае может получиться так, что компонент, улучшающий работоспособность одной программы, будет приводить к сбоям других программ, что сильно усложнит отладку и выяснение причин сбоев. В свою очередь, использование отдельных префиксов для каждой программы, требующей установку несвободных Windows-компонентов, позволит полностью избежать подобных проблем.
- Префиксы можно свободно перемещать и копировать, что удобно для создания резервных копий подготовленных под ту или иную задачу экземпляров.
Создание префиксов
Как было ранее отмечено, можно создавать собственные префиксы и не ограничиваться стандартным /home/$USER/.wine. Пример создания нового префикса (выполнять от обычного пользователя):
WINEPREFIX="/home/$USER/.wine_new" wineboot -i
Пояснения:
- WINEPREFIX — это переменная окружения, которой нужно передать путь до каталога, в котором размещается префикс. В примере был передан путь до каталога wine_new причём он не обязательно должен существовать заранее.
- wineboot -i — утилита отвечает за создание префикса, подготовку его к работе, имитацию перезагрузки и выключения ОС Windows. Ключ «-i» инициирует создание префикса. Примечание: префикс так же будет автоматически создан при попытке его обновления (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 следует экранировать кавычками.
Результат:
После установки будет создана кнопка запуска Steam. В ней автоматически прописывается команда на запуск установленной программы из конкретного префикса, что облегчает последующий запуск. Пример команды из кнопки запуска:
env WINEPREFIX="/home/$USER/.wine_steam" wine C:\\users\\Public\\Desktop\\Steam.lnk
Видно, что запуск производится из нужного префикса и с Windows-ярлыка Steam.lnk.
Можно создавать собственные кнопки запуска, чтобы каждый раз не набивать (или копировать откуда-то) команду на запуск той или иной Windows-программы.
Подобным образом производится запуск любых программ с исполняемым файлом .exe.
Запуск bat-файлов — «батников»
Ранее для запуска необходимо было задействовать start, но с выходом Wine 8.0 эта опция стала применяться автоматически. Теперь достаточно запускать в обычном режиме:
WINEPREFIX=/home/$USER/.wine wine 'C:/script.bat'
Альтернативный устаревший вариант:
WINEPREFIX=/home/$USER/.wine wine start 'C:/script.bat'
Установка программы из установочного пакета msi
Ранее запуск таких пакетов отличался от запуска .exe, но ныне, начиная с Wine 8.0, запуск производится без задействования дополнительных опций.
Пример установки программы Налогоплательщик ЮЛ (версия 4.81) с созданием префикса с названием wine32nalogul Команды выполняются с правами обычного пользователя. Для этой программы желательно использовать 32-х битный префикс, причём это становится необходимым, если планируется использовать печать с двумерным штрих-кодом PDF-417. Создание 32-х битного префикса:
WINEARCH=win32 WINEPREFIX=/home/$USER/.wine32nalogul wineboot -i
Поместить в префикс ранее загруженный установочный файл nalogul481.msi
mv /home/$USER/Downloads/nalogul481.msi /home/$USER/.wine32nalogul/drive_c/
Запустить установочный пакет msi с указанием пути в стиле DOS-Windows:
WINEPREFIX=/home/$USER/.wine32nalogul wine 'C:/nalogul481.msi'
Альтернативный устаревший вариант с задействованием msiexec:
WINEPREFIX=/home/$USER/.wine32nalogul wine msiexec /i 'C:/nalogul481.msi'
Ещё один вариант — с задействованием start:
WINEPREFIX=/home/$USER/.wine32nalogul wine start 'C:/nalogul481.msi'
Результат:
Использование winetricks для установки Windows-компонентов
В предыдущем разделе был рассмотрен запуск установщика «Налогоплательщик ЮЛ», но для полноценной работы программы, в связи с её специфической реализацией, (на момент 2023 года) требуются проприетарные Windows-компоненты:
- 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 (файловый менеджер ОС Windows) и устраняющего проблемы с интерпретацией UNIX-путей. Команда на запуск выглядит подобным образом:
WINEPREFIX=/home/$USER/.wine32nalogul wine start /unix 'C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe'
Пояснения:
- В связи с тем, что в пути до исполняемого файла программы есть пробел, путь необходимо экранировать кавычками — ‘C:/Налогоплательщик ЮЛ/INPUTDOC/inputdoc.exe’.
- Из-за необходимости использования start /unix потребуется отредактировать команду в кнопке запуска:
- Из-за наличия пробела в пути, там же в настройках кнопки запуска, необходимо экранировать кавычками путь в строке «Рабочий каталог».
Результат запуска «Налогоплательщик ЮЛ»:
Прямое указание рабочего каталога
Существуют программы, которым необходимо напрямую указывать рабочий каталог (working directory), иначе они не смогут найти все необходимые для запуска ресурсы, так как те находятся в каталоге уровнем выше, в то время как поиск ресурсов производится сначала в каталоге с исполняемым файлом, после в его подкаталогах рекурсивно в глубину, а затем в C:windows. Следовательно, такие программы окажутся неработоспособными при прямом запуске. В этом случае потребуется вручную указать рабочий каталог — отправную точку для рекурсивного поиска всех нужных программе ресурсов.
Это можно осуществить двумя способами: создать кнопку запуска и указать в ней путь до рабочего каталога или прямо указать в команде на запуск. На примере игры STALKER Clear Sky рассмотрим второй способ.
Вводная:
- Создан префикс с названием .wine64clearsky
- Путь установки игры в префиксе: C:/Program Files (x86)/STALKER Clear Sky
- Исполняемый файл игры xrEngine.exe находится в каталоге ./STALKER Clear Sky/bin.
- Ресурсы игры находятся в каталогах:
- ./STALKER Clear Sky/levels
- ./STALKER Clear Sky/Localization
- ./STALKER Clear Sky/patches
- ./STALKER Clear Sky/resources
Отправная точка для успешного поиска ресурсов находится уровнем выше (каталог ./STALKER Clear Sky/, чем расположение исполняемого файла (./STALKER Clear Sky/bin/xrEngine.exe), тем самым при прямом выполнении игра не найдёт ресурсы:
Это решается следующим образом:
WINEPREFIX=/home/$USER/.wine64clearsky wine start /d 'C:/Program Files (x86)/STALKER Clear Sky/' ./bin/xrEngine.exe
Пояснения:
- start /d — с опцией /d по указанному пути обозначается рабочий каталог, который станет отправной точкой в рекурсивном поиске ресурсов для запуска программы.
- С тем учётом, что рабочий каталог указан, можно указать относительный путь до исполняемого файла. В данном случае ./bin/xrEngine.exe.
Благодаря этому, программа сможет найти все необходимые для запуска ресурсы.
Установка, запуск и удаление программ в графическом режиме
winefile — файловый менеджер Wine с графическим интерфейсом, схожий по функционалу с Windows Explorer (Проводник Windows). С его помощью можно осуществлять различные операции над файлами и каталогами в префиксе, включая запуск Windows-программ.
Пример запуска файлового менеджера для префикса с названием .wine32nalogul:
WINEPREFIX=/home/$USER/.wine32nalogul wine winefile
Запуск Windows-программ осуществляется двойным щелчком по исполняемому файлу или ярлыку (.lnk):
В целом логика управления во многом аналогична типичному файловому менеджеру Linux. Стоит отметить, что файлы, удалённые через файловый менеджер Wine, окажутся в обычной системной корзине (trash:///).
Установленные в префикс программы можно удалить в графическом режиме через «Панель управления» и «Установка/удаление программ»:
В открывшемся окне из списка выбрать ранее установленную программу и нажать кнопку «Удалить»:
Альтернативным способом открытия «Установка/удаление программ» (uninstaller) является прямой запуск. Пример:
WINEPREFIX=/home/$USER/.wine32nalogul wine uninstaller
Принудительное завершение работы сбойных программ
Бывают случаи, когда работу сбойной программы довольно неудобно завершать штатными средствами Linux, особенно в случаях, когда программа приводит к зависанию завершения работы процессов префикса: services.exe, winedevice.exe, plugplay.exe и т.д. Принудительно завершить работу всех программ в префиксе можно следующим образом:
WINEPREFIX=/home/$USER/.wine wineboot -k
Альтернативный вариант с тем же эффектом:
WINEPREFIX=/home/$USER/.wine wineserver -k
Выполнение этих команд является эквивалентом нажатия кнопки Reset, при этом будет «принудительно перезагружен» только указанный префикс, а не вся система.
Более мягким вариантом, а так же удобным способом ознакомиться со всеми активными процессами префикса, является использование штатной программы taskmgr — «Диспетчер задач». Пример запуска для префикса с названием .wine32nalogul:
WINEPREFIX=/home/$USER/.wine32nalogul wine taskmgr
Демонстрация содержимого вкладок (объединены в одну картинку):
Удаление префиксов
Самым удобным способом является удаление посредством winetricks:
WINEPREFIX=/путь/до/префикса winetricks annihilate
В этом случае будут удалены:
- Каталог префикса вместе со всем содержимым.
- Кнопки запуска и миниатюры для программ, установленных в удаляемый префикс.
Тем самым не остаётся никаких остаточных файлов.
Если по какой-то причине префикс был удалён вручную, останутся некоторые файлы, которые придётся зачистить так же вручную.
Место хранения кнопок запуска:
~/.local/share/applications/wine/
Место хранения миниатюр, включая тех программ, что установлены в Wine:
~/.local/share/icons/hicolor/
Так же можно удалить ненужные Windows-установщики, загруженные winetricks при установке Windows-компонентов в префикс:
~/.cache/winetricks/
Возможности, предоставляемые Wine
Wine позволяет запускать 32- и 64-битные исполняемые файлы (PE executable), имеющие расширение .exe и предназначенные для выполнения в Windows-совместимом окружении. Wine предоставляет все необходимые для запуска программ динамические библиотеки (.dll-файлы), а также поддерживает установку и работу дополнительных компонент (библиотек), требуемых программами. Такая установка может выполняться через инструмент установки сторонних дополнений winetricks или же непосредственно инсталлятором программы.
В частности, поддерживаются такие интерфейсы как
- GDI;
- GDIPlus;
- Print;
- CryptoAPI (частично);
- Internet Explorer (частично);
- DirectX;
- видео- и аудио-кодеки;
- .NET (в реализации Mono);
- кодирование и раскодирование изображений в форматах JPEG, PNG, GIF, TIFF, BMP;
- OpenGL;
- ODBC;
- LDAP (частично);
В частности, поддерживается установка и работа следующих сторонних дополнений:
- библиотек времени выполнения (runtime) для программ, собранных в средах разработки Visual C++ версий от 2003 до 2019 включительно, а также версии 6;
- Microsoft Data Access Components (MDAC 2.7, MDAC 2.8)
- MS Jet 4.0
- Microsoft .NET версий от 1.1 до 4.8 включительно;
- .NET Core версий 2.2 и 3.0;
- Microsoft Visual FoxPro версий от 6.0 до 9.0 включительно.
Реестр в Wine
Каждый Wine-префикс имеет собственный экземпляр реестра Windows. Основные особенности:
- Реестр префикса состоит из нескольких файлов: system.reg, user.reg и userdef.reg.
- Файлы располагаются в корневом каталоге префикса. Пример: ~/.wine/
- Иерархия разделов реестра Wine-префикса аналогична Windows.
- В реестре хранятся различные настройки среды префикса.
- Дерево реестра из оригинальной ОС Windows не совместимо с реестром Wine и наоборот.
- В реестр Wine-префикса можно импортировать отдельные записи из reg-файлов, предназначенных для Windows.
- В Wine реализованы стандартные Windows-утилиты для работы с реестром.
- regedit — утилита с графическим интерфейсом, идентичным оригинальной программе.
- reg — утилита для манипуляций с записями в реестре через терминал.
- Файлы реестра Wine можно редактировать обычным текстовым редактором.
- Ключи реестра Wine-префикса.
Пример запуска regedit для префикса с названием .wine:
WINEPREFIX=/home/$USER/.wine wine regedit
Переключение транслятора
Для работы программ, задействующих DirectX, в Wine используется специальный транслятор, который преобразует вызовы API DirectX в OpenGL или Vulkan.
Трансляция в OpenGL имеет значительные накладные расходы, что выражается в потерях до 40% производительности в отдельных случаях и до 20% в среднем. Имеет высокую совместимость со старыми видеокартами.
Транслятор на основе Vulkan более производительный, но требует относительно современного оборудования: видеокарты от 2016 года с поддержкой спецификации Vulkan 1.3. Потери редко превышают 20% и, благодаря более продвинутым качественным драйверам и подсистемам, производительность частенько несколько выше (до 10%), чем в Windows.
Кроме отмеченных трансляторов, в Wine присутствует свободная реализация GDI, который можно задействовать для правильной отрисовки графики в некоторых программах 90-х и начала 2000-х годов. К примеру, Parkan Хроника империи.
По заявлению разработчиков, в 2022 году между трансляторами был достигнут паритет по поддержке спецификаций DirectX, поэтому предпочтительно задействовать Vulkan-транслятор. При этом стоит отметить, что OpenGL-транслятор всё-таки имеет более высокую совместимость со старыми программами (по крайней мере, на момент 2023 года).
На момент 2023 года Vulkan-транслятор не используется по умолчанию и его необходимо задействовать вручную. Актуальным способом является переключение через переменную окружения WINE_D3D_CONFIG.
Пример:
WINE_D3D_CONFIG='renderer=vulkan' WINEPREFIX=/home/$USER/.wine wine 'C:/Program Files (x86)/STALKER Clear Sky/STALKER Clear Sky.lnk'
Пояснения:
- Переменной окружения WINE_D3D_CONFIG необходимо передать значение ‘renderer=vulkan’.
- Vulkan-транслятор будет задействован для конкретной программы.
Примечание: Таким же способом можно задействовать GDI — WINE_D3D_CONFIG =’renderer=gdi’
Ассоциация файлов с родными приложениями 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
В дистрибутивах ALT Linux представлено несколько вариантов Wine:
- wine — сборка Wine с добавлением патчей проекта Wine-staging и доработанного силами ALT Linux Team и компании Etersoft. Именно эта сборка является основной для дистрибутивов ALT Linux, так как имеет лучшую функциональность и поддерживается разработчиками.
- wine-stable — сборка стабильного релиза Wine c добавлением патчей проекта Wine-staging и доработанного силами ALT Linux Team и компании Etersoft. Именно эта сборка является основной для дистрибутивов ALT Linux, так как имеет лучшую функциональность и поддерживается разработчиками.
- wine-vanilla — сборка оригинального Wine от WineHQ без каких-либо изменений.
У компании Etersoft есть ещё одна — коммерческая — версия: WINE@Etersoft, которая также совместима с дистрибутивами ALT Linux (впрочем, как и с другими дистрибутивами Linux). WINE@Etersoft сертифицируется на предмет совместимости как с операционной системой, так и с приложениями, что позволяет получить поддержку и гарантии работоспособности.
Полезные команды
wine cmd # Windows terminal / execute bat batch scripts, etc. (CLI) wine control # Wines equivalent of the Windows Control panel (GUI) wine eject # Eject a disc from the specified optical drive (CLI) winepath # mangle Windows <-> Unix paths (CLI) wine reg # registry editor (CLI) wine taskmgr # same as Windows task manager utility (GUI) wine uninstaller # global program installer / uninstaller (GUI) wine winefile # alternative Wine file manager (GUI) wine explorer # desktop (GUI)
Ссылки по теме
- Несколько архитектур в одной ОС (Arepo/Biarch)
- 32-битный OpenGL на 64-битной системе с драйвером Intel
- 32-битный OpenGL на 64-битной системе с драйвером NVIDIA
- Описание WINE@Etersoft
- Установка WINE@Etersoft на 64-битные ОС
- Документация по WINE@Etersoft на русском языке
- Q4Wine
- Ассоциация файлов с родными приложениями Linux: [1], [2]
- Ярлычки программ
Возможности, предоставляемые 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. Но, как правило, в каждом конкретном случае существует только одно верное решение. Поэтому, для того, чтобы ликвидировать эту проблему, придется методом проб использовать различные способы устранения ошибки, пока не будет найден единственно верный вариант.
там внутре (у терминала) вроде как LUA? очевидно можно через неё рулить.
PS. посмотрел quik — какая-то уродливая фигнь..внутри есть некий недодокументированный qpile чем то напоминающий кобол, его возможностей нехватает и поэтому добавлена lua. Lua разработчики не осилили и оставили юзерам кайф возится с системными посылками, форматами запросов и битовыми полями.
Очевидно есть ещё web-api, но совсем скрыт от посторонних глаз
PPS. еще доставил стиль общения разработчиков с юзерами на ихнем форуме..
- Показать ответ
- Ссылка
Цитата |
---|
Кирилл — пишет: Доброго дня. Ошибка чуть другая : «Не удалось установить DDE соединение с сервером ‘excel’. Либо не запущен ‘C UsersВасяDesktopQuik.xlsx’, либо в него не загружен лист ‘Лист1». Хотя док-т запущен, Лист1 существует. Если поставить галку «Запускать ДДЕ-сервер автоматически — Квик виснет на долго (ни разу не дождался на сколько). Помогите разобраться, плз. |
Сообщение об ошибке «Не удалось установить DDE-соединение. Либо не запущено приложение, куда будет экспортирована информация, либо в него не загружен лист [Книга][Лист]» может возникнуть:
1. Не запущен DDE-сервер либо программа MS Excel не открыта. Откройте программу и загрузите в нее требуемый файл.
2. Неправильно указано название Рабочей книги (файла) приложения, или ее листа. В поле «Рабочая книга» необходимо указывать имя файла в точном соответствии с его наименованием в программе. Если файл был ранее сохранен, то он имеет расширение и название указывается вместе с ним, например quikexp.xls. Если рабочая книга приложения еще не была сохранена в виде файла, наименование не имеет расширения (например «Книга1») и в настройках экспорта указывается без него.
*Обратите внимание!! Если настройка «Запускать приложение DDE сервера автоматически» отключена, то в поле «Рабочая книга» указывается только название файла, путь до него указывать не нужно.*
3. В настройках MS Excel (пункт меню Сервис / Параметры, вкладка «Общие») включен флажок «Игнорировать DDE-запросы от других приложений». Отключите его.
I think I fixed the issue. I found this website (in chinese, but you can translate using google), which seems to have a solution. This is linked to a problem with the deepin-anything-dkms package.
In this link it asks you to download the kernel ver 5.8, but I did not had to do it to fix the problem. Focus on the last instructions:
After inquiring, it should be deeping-anything (
https://github.com/linuxdeepin/deepin-anything ) that the kernel
module has a problem. The new version of the kernel has changed the
structure, resulting in unsuccessful compilation. Modify its source
code directlysudo gedit /var/lib/dkms/deepin-anything/0.0/source/vfs_change.c
Modify time_t on line 128 to ktime_t
Amend lines 336-343 as follows:
static struct proc_ops procfs_ops = { .proc_open = open_vfs_changes, .proc_read = read_vfs_changes, .proc_ioctl = ioctl_vfs_changes, .proc_lseek = no_llseek, //.llseek = generic_file_llseek, .proc_release = release_vfs_changes, };
You can successfully install the 5.8 kernel by compiling.
Keep it for yourself, or some people may need it.
After executing these simple steps I executed the following command:
sudo apt install sudo apt install deepin-anything-dkms
And the issue seemed to be solved.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
SiamSami opened this issue
May 4, 2018
· 11 comments
Closed
Error while compiling….
#9
SiamSami opened this issue
May 4, 2018
· 11 comments
Comments
When try to compile dde-file-manager, it says, «DAction: No such file or directory».
Do you compile filemanager in master banch?
If yes, please checkout to develop2.0, then compile.
The master branch was deprecated!
Copy link
Contributor
Author
Well, develop2.0 has an issue with my OS. Qt creator says, unexpected UTF-8 bom. The problem is with the .pro file.
You can save it with utf-8 bom.
How to save it with utf-8 bom? The option is in right-mouse menu.
Direct clone it to your local disk and compile it shouldn’t have that problem, could you please provide some more details about that? Which distro are you using? Did you modify any source file before compiling? Provide the compiler’s output also helps.
Thanks.
Copy link
Contributor
Author
Thanks BLumia!
I don’t have the problem with utf-8 bom anymore.
My NEW PROBLEM is that, qtcreator is outputting the following, «deepin-anything/fs_buf.h: No such file or directory»
Could you tell me what to do?
I am using Ubuntu 18.04 with latest updates. Any help would be greatly appreciated.
Newer version of dde-file-manager requires deepin-anything to build&run, so you should check it out first.
Copy link
Contributor
Author
@SiamSami
You need install deepin-anything-dkms, deepin-anything-dev, deepin-anything-libs. But you are in ubuntu now. You’d better to complie deepin-anything in your computer.
It is simple. deepin-anything depend on linux-headers-generic.Y
You can clone it, then cd to the dir which the deepin-anything is in.
Then make install. OK!
Friendly reminder, the master branch is no longer a deprecated branch, it’s the last stable version of dde-file-manager now.
Copy link
Contributor
Author
Maybe I should tell you guys that I’m no longer using Ubuntu… I am now using Arch Linux… The version of Qt is 5.10.1-8
Also, I am getting this error while trying to compiling it,
«[Makefile:95: sub-dde-file-manager-lib-qmake_all] Error 3»
Thanks for all the help, by the way!!!
Not sure if got a successful build now…
For Arch Linux user, you can always checkout the PKGBUILD file provided by package maintainer
We also updated README file of this project to help people about how to build this project. btw, we switched the development branch to master now.
Feel free to reopen this issue if you got any further questions about building the file manager