Уже состоялся :)
На сегодня WINE это единственный способ использовать Windows-программы на рабочих местах, без оплачивания лицензий. Другим активно используемым вариантом принести Windows-программу в Linux-систему является подключение по протоколу RDP к Windows, работающему в терминальном режиме.
Что такое WINE? Как известно, это не эмулятор, а скорее просто прослойка совместимости между Windows-приложениями и хост-системой (далее рассматривается Linux, но вообще WINE тестируется на различных системах, в том числе и проприетарных). WINE – свободный проект, выпускаемый под лицензией LGPL.
WINE состоит из нескольких компонент, которые условно можно поделить на три части:
Библиотека, предоставляющая для Unix-приложений API Win 32?. По количеству предоставляемых функций её можно сравнить с qt – столь широк спектр предлагаемых вызовов – от операций с файлами до построения GUI и обращения к БД.
Если имеется исходный код, программу можно пересобрать. Реализация API меняется от версии к версии. Центром libwine является NT-подобная система, работающая со строками только в Unicode, с обвязкой для 8-мибитовых функций.
Среда для исполнения двоичных Windows-программ, предоставляет программам окружение, неотличимое от Windows. Полная имитация, включая реестр, стандартные каталоги. Части ФС, которые будут дисками в WINE, указываются символическими ссылками в опред. каталоге (dosdevices). Реестр является единственной изменяемой информацией, необходимой для работы WINE.
Средства компиляции и отладки. Имеются заголовочные файлы, которые описывают доступное API, компилятор winegcc, являющийся обёрткой над gcc, отладчик winedbg.
WINE имеет реализацию функций практически всех функций динамических библиотек (DLL), входящий в Windows: начиная от 16-разрядных, заканчивая появляющейся поддержкой 64-битного режима.
Хотелось бы отметить, что WINE всегда выполняется в непривилегированном режиме и не имеет модулей ядра. Проблемы, которые могут быть вызваны запуском Windows-программ, будут носить локальный характер.
user program
Create File?
ntdll
Nt Create File?
wine_server
open_fd
glibc
open
системный вызов ядро
Нет поддержки драйверов оборудования (поскольку нет и не может быть доступа к оборудованию в пользовательском режиме), нет поддержки USB. Вся периферия должна подключаться к host-системе, например сканер, будучи настроенным в SANE, будет доступен и в WINE через TWAIN-интерфейс, являющися обёрткой над SANE.
Процесс разработки WINE похож на метод, применяемый при разработке ядра Linux. Все присылаемые (в специальную рассылку) патчи подвергаются рассмотрению разработчиков, которые могут высказывать свои соображения и добавления. Имеется один человек, Александр Жильярд, который принимает решение о том, включать ли патч в CVS, и при необходимости совершает в нём какие-то улучшающие изменения (например, исправляет ошибки в оформлении кода). Ведётся контроль всех отправляемых патчей и их авторства. Перед тем, как принять патч, он проходит автоматическое тестирование – WINE пересобирается с новым патчем, и выполняется регресс-тестирование: запускается тестовый код, написанный практически для каждого API, с помощью которого можно удостовериться, что добавление патча не ухудшает совместимость.
Перечилю приложения, специфически популярные:
– 1C (MS Visual C++)
– Инфо-Бухгалтер (Delphi)
– КОМПАС (компании Аскон), который планируется включить в грядущий дистрибутив ALT Linux 3.0 Compact, как пример упаковки Windows-приложения в RPM-пакет.
– Карта города Top Plan? (питерской фирмы)
– Fine Reader?
Сборка в RPM-пакет для Windows-программы – это фактически помещение её в своеобразный chroot, доступа на запись к своим файлам программа (и запускаемая среда WINE) не имеет.
См. Разработчику/RPM.
* С помощью WINE разработчики ПО могут собирать свой код для Linux-систем
Ссылок на эту страницу нет