Инструменты пользователя

Инструменты сайта


wtlib:onlinux:comctl32_dll

Библиотека comctl32.dll

В качестве решения ряда проблем приводится совет использовать comctl32.dll. Что он означает? Дело в том, что wine содержит собственные, написанные разрабочиками wine версии системных библиотек (.dll файлы) windows. Создание идентично работающих библиотек задача не из простых1), так что неудивительно, что не все функции этих библиотек работают.

Но wine позволяет подключать оригинальные системные библиотеки из Windows, таким обрзаом обеспечив 100% работу всех функций данной системной библиотеки. Казалось бы, хорошее решение, но загвоздка в том, что тут есть некоторая проблема с лицензией. Вы не можете просто пойти к другу, и взять из его установки Windows нужную библиотеку. Вы можете взять библиотеку только из системы, которая принадлежит вам на законном основании. Если у вас нет лицензии на Windows, то использование этого варианта будет нарушением лицензии Windows.

Если же с лицензией у вас всё в порядке, то вы можете подключить к wine оригинальную библиотеку comctl32.dll.

  1. Скопируйте файл библиотеки. Возьмите из вашей установки Windows из папки windows/system32 файл comctl32.dll и скопируйте его в ~/.wine/drive_c/windows/system32 заменив существующий файл.
  2. Устраните проблемы с манифестами. Удалите из папки ~/.wine/drive_c/windows/winsxs/manifests/ все файлы, в названии которых присутствует common-controls. Сделать это можно, например, так:
    rm ~/.wine/drive_c/windows/winsxs/manifests/*common-controls*
  3. Включите в настройках wine использование оригинальной библиотеки. Для этого введите в консоли или меню запуска программ команду winecfg. Откройте вкладку «Библиотеки», выберите в выпадающем списке comctl32 и нажмите кнопку «Добавить». Выделите появившийся пункт в списке и нажмите кнопку «Редактировать». Выберите пункт «Сторонняя, затем встроенная». Нажмите «ОК» а затем «ОК» ещё раз, чтобы сохранить изменения.

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

1)
Особенно, если учесть тот факт, что Microsoft использует в своих программах и библиотеках множество недокументированных функций, так что зачастую разработчикам wine приходится выяснять как что-то должно работать что называется «методом тыка».
wtlib/onlinux/comctl32_dll.txt · Последнее изменение: 2010/12/19 16:04 (внешнее изменение)