Как разработчику Windows проще всего заставить свое программное обеспечение хорошо работать под Wine

Многие из моих пользователей говорили мне, что хотели бы запускать мое программное обеспечение на своих Linux-машинах под Wine.

Но я разработчик Windows и практически не имею опыта работы с Linux.

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

Итак, что я могу сделать без особых усилий, чтобы моя программа работала как можно лучше под Wine?


Я нашел эта общая справка по запуску приложений под Wine.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
855
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Не используйте слишком много окон API! Не используйте ничего нового от Microsoft;)

Это не должно быть отвергнуто. Это не очень подробно, но воздержание от многих вызовов Windows API действительно правильно.

BobbyShaftoe 07.01.2009 08:53

Что значит «слишком много»? Программа Windows будет использовать любые биты API, необходимые для выполнения поставленной задачи.

1800 INFORMATION 07.01.2009 11:19

Часто бывают моменты, когда вы можете использовать либо стандартный вызов, либо вызов Win32.

Jesse Pepper 05.04.2012 10:10

На каком языке / платформе вы разрабатываете? В зависимости от того, что это такое, запустить его не составит труда. Например, если вы используете Java или Python, оба работают в Linux очень чисто. Точно так же, если вы разработчик .NET, вы сможете с некоторой болью запустить свое приложение в Mono.

Я использую Delphi 2009. В первом обзоре моего приложения оно отмечено как «бронзовое», но не указано, что работает, а что нет. Я не делаю ничего особенного, но у меня есть несколько вызовов Windows Core API, я использую реестр Windows и включаю пару сторонних пакетов, совместимость которых неизвестна.

lkessler 07.01.2009 08:49

Если вы не делаете ничего необычного, например, экспериментируете с оборудованием или копаетесь в недокументированных вызовах 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 для такого рода вещей.

Похоже, что на скриншоте есть ошибка приложения. :-(

lkessler 09.01.2009 19:43

Там есть. Он появляется во время запуска и завершит работу приложения, если вы нажмете ОК. Однако, если вы оставите его открытым, приложение будет работать нормально.

Richard Harrison 10.01.2009 16:53

Найдите бета-тестеров Linux. Он может сообщить об ошибке разработчикам WINE или найти ошибку в вашем приложении.

Wine более чувствителен к ошибкам, чем Windows. Например, Wine выйдет из строя на NULL оконных дескрипторах и не сможет создать окна, если класс недействителен, тогда как Windows более надежна и просто обойдет ошибку.

Это возможность очистить ваш код.

Я был поражен тем, насколько хорошо Wine запустил мое приложение с первого раза. Однако мне пришлось избавиться от стороннего компонента на основе драйверов.

Другие вопросы по теме