Многие из моих пользователей говорили мне, что хотели бы запускать мое программное обеспечение на своих Linux-машинах под Wine.
Но я разработчик Windows и практически не имею опыта работы с Linux.
Теперь я мог потратить месяц или два на установку Linux, изучение Linux, установку Wine, изучение Wine и тщательную проверку того, что мое приложение хорошо работает под Wine. Но я все еще занимаюсь разработкой для Windows, поэтому сейчас я не хочу отрывать так много времени от разработки.
Итак, что я могу сделать без особых усилий, чтобы моя программа работала как можно лучше под Wine?





Не используйте слишком много окон API! Не используйте ничего нового от Microsoft;)
Что значит «слишком много»? Программа Windows будет использовать любые биты API, необходимые для выполнения поставленной задачи.
Часто бывают моменты, когда вы можете использовать либо стандартный вызов, либо вызов Win32.
На каком языке / платформе вы разрабатываете? В зависимости от того, что это такое, запустить его не составит труда. Например, если вы используете Java или Python, оба работают в Linux очень чисто. Точно так же, если вы разработчик .NET, вы сможете с некоторой болью запустить свое приложение в Mono.
Я использую Delphi 2009. В первом обзоре моего приложения оно отмечено как «бронзовое», но не указано, что работает, а что нет. Я не делаю ничего особенного, но у меня есть несколько вызовов Windows Core API, я использую реестр Windows и включаю пару сторонних пакетов, совместимость которых неизвестна.
Если вы не делаете ничего необычного, например, экспериментируете с оборудованием или копаетесь в недокументированных вызовах API и структурах данных, вы сможете запускать свой код под Wine с небольшими изменениями или без них. Wine имеет довольно полную реализацию общедоступных API-интерфейсов Windows, поэтому, если ваша программа работает хорошо и не мешает, она должна просто работать.
Загрузите VMWare и Виртуальная машина Ubuntu (Ubuntu - популярный дистрибутив Linux) с сайта VMWare. Это предоставит вам работающую операционную систему Linux в среде Windows без необходимости устанавливать Linux вручную.
Затем вы можете использовать инструкции здесь для установки Wine, эта страница Wiki также предоставляет вам некоторые инструкции по его использованию.
Если вы последуете тому, что предложил Адам Розенфилд, и просто попробуете запустить свое приложение в Wine без изменений, вы сможете быстро определить, есть ли проблемы. Я предполагаю, что они есть, иначе ваши пользователи не связались бы с вами по этому поводу :)
Есть много способов получить помощь по отладке приложений в Wine, обратитесь к Веб-сайт за параметрами и выберите несколько подходящих вам способов. Как всегда, лучше не полагаться на один канал связи.
Кроме того, если вам удобнее разрабатывать в Windows, подход с использованием виртуальной машины позволит вам скомпилировать код, как обычно, в Windows, и скопировать двоичный файл в виртуальную машину для тестирования (Ubuntu поддерживает просмотр / монтирование общих ресурсов Windows).
Избегайте использования WPF - это совет №1.
Но тестирование приложения под Wine не убьет вас. Попытаться не так уж и сложно; это определенно не займет месяцев. Например:
Используйте http://www.ubuntu.com/getubuntu/downloadmirrors#wubi для установки Ubuntu в файл на вашем компьютере с Windows, затем запустите ubuntu и установите последнюю версию Wine из http://winehq.org/download/deb Затем попробуйте запустить установщик вашего приложения. Если это не сработает, проверьте FAQ по Wine, обратитесь за помощью на один из форумов по Wine и / или сообщите об ошибках в трекере ошибок Wine.
С момента безупречного старта до опробования установщика должно пройти около трех часов.
Я был весьма удивлен, когда одно из моих приложений Delphi5 только что заработало из архива.
Единственный реальный способ, которым это будет работать, - это сделать это самостоятельно, то есть установить vmware и дистрибутив Linux, как предложил Шон. На самом деле Linux не так уж и сложен, и мы все здесь, чтобы помочь.
Проведя быстрый тест, я могу подтвердить, что он в основном работает. Во время запуска ACCVIO читает 0x34, диалоговое окно с ошибкой можно игнорировать и приложение запускается. Я открыл GEDCOM Стива Маккарти.
Это было использование Wine 1.1.12 под MEPIS 7.9.94-rc1_32 под VMWare. Настоятельно рекомендую использовать VMWare для такого рода вещей.
Похоже, что на скриншоте есть ошибка приложения. :-(
Там есть. Он появляется во время запуска и завершит работу приложения, если вы нажмете ОК. Однако, если вы оставите его открытым, приложение будет работать нормально.
Найдите бета-тестеров Linux. Он может сообщить об ошибке разработчикам WINE или найти ошибку в вашем приложении.
Wine более чувствителен к ошибкам, чем Windows. Например, Wine выйдет из строя на NULL оконных дескрипторах и не сможет создать окна, если класс недействителен, тогда как Windows более надежна и просто обойдет ошибку.
Это возможность очистить ваш код.
Я был поражен тем, насколько хорошо Wine запустил мое приложение с первого раза. Однако мне пришлось избавиться от стороннего компонента на основе драйверов.
Это не должно быть отвергнуто. Это не очень подробно, но воздержание от многих вызовов Windows API действительно правильно.