Под Wine иль не под Wine?

Прелюдия



В жизни каждого Windows разработчика может наступить момент, когда кровь из носу необходимо понять, под управлением WineHQ работает программа или нет. Почему? Потому что мир не идеален, и необходимо помочь Wine переварить приложение корректно. Разумеется, если разработчика волнует фидбек от ребят по ту сторону баррикад (Mac, Linux и т.д.).



Мотивы



Назову несолько причин по которым это понадобилось нашей комманде:
  • CHM хелпы отвратно отображаются под Wine;
  • на голом Wine отсутствуют MS Jet 4.0 и MS MDAC 2.8;
  • и как выяснилось, наши приложения (одно и второе) лучше выглядят, когда используются Microsoft Core Fonts (Arial, Courier, Times и т.д.).


Уверен, список можно дополнить, но это не является целью данной статьи.

Реализация



Способ элегантен и прост. Полагаю, любой вменяемый разработчик сможет адаптировать это для любимого языка.

Реализация для С:

bool GetWineAvail()
{
  HMODULE h = LoadLibrary("ntdll.dll");
  bool r = false;

  if(h != NULL)
  {
   r = GetProcAddress(h, "wine_get_version"!= NULL;
   FreeLibrary(h);
  }

  return r;
}

//использование
if (GetWineAvail())
{
  ShowMessage("Кругом вино, кэп!");
}
else
{
  ShowMessage("Не видывал окна прозрачней.");
}


Реализация для Delphi:
function GetWineAvail: boolean;
var H: cardinal;
begin
 Result := False;
 H := LoadLibrary('ntdll.dll');
 if H > 0 then
 begin
   Result := Assigned(GetProcAddress(H, 'wine_get_version'));
   FreeLibrary(H);
 end;
end;

//использование
if GetWineAvail() then
 ShowMessage('Ура! Мы под Винищем!')
else
 ShowMessage('Чистейший Виндовз, сэр!');
end;


Удачи!
+60
23 ноября 2009, 18:43
27

комментарии (123)

+10
XuMiX #
отличные сообщения;)
+2
mephisto #
Перенесите в тематический =)
+2
pasha_golub #
Не обладал кармической силой. Сефчас попробую
+1
pasha_golub #
Кстати, какой это тематический? :)
+1
mephisto #
Хороший вопрос.
Я бы, не мудрствуя лукаво, запостил в Разработку.
0
oe24 #
0
CTpaHHoe #
«Переезд» мёртв, последнее сообщение в нём аж от 2007-го года. Любопытно, как-то не вяжется это с текущими событиями
+6
4dmonster #
видимо все кто хотел переехали.
+3
MAXH0 #
Это уже тривиально. Ни каких танцев с бубном в консоли :(
+1
PATRICK17 #
завтра на работе попробую… да нашим основным разработчикам покажу. Может допилят свое творение…
–5
pieceofsummer #
if (GetWineAvail())
{
  ShowMessage("костыли вы мои, костыли...");
}
else
{
  ShowMessage("ну слава яйцам, пронесло!");
}
–1
b8c6 #
Зачёт!
Но зачем же ограничиваться платформой? Ждём программ-полиглотов «Ура, ассемблер!», «Ужас, меня скормили VB!», «В Java только дедушки» и т.д.

А по теме топика: ну давайте сюда все Hello world выкладывать, кто какие найдёт. Способ настолько прост и очевиден, что обычно идёт за любым hello world.
Я бы, правда, в сторону #define копал бы, а не if. Всё-таки «где будет использоваться — там и должно быть собрано» — правильный метод.
0
pasha_golub #
Про очевидность позвольте не согласиться.

А вы таки предлагаете два бинарника держать? Один, выходит, для Wine, а другой для Windows? Нравы у вас, однако. :)
0
b8c6 #
Конечно два бинарника. Imho, это проще, чем постоянные костыли по всему коду.
Хотя палка о двух концах. Мне моё — проще. Вам — вы и решайте.
0
pasha_golub #
Вы, наверное, гиперболизируете размер костылей. :) Я про это тут написал: раз и два.

Хотя сам факт использования define я, ни в коем разе, не отрицаю. Просто не для нашей задачи.
0
b8c6 #
Любимая шутка:
#define i j /* wish you happy debugging */
+1
pasha_golub #
Ну, не так :)

#define true false //счастливой отладки, суки
0
pasha_golub #
А еще лучше, вообще, так:

#define false rand()%2 //счастливой отладки, суки
0
naryl #
#define return if (std::random(1000) < 2) throw std::exception(); else return

ithappens.ru/story/1383
0
pasha_golub #
Но это С++ все-таки, хотя тоже забавно
0
Gorthauer87 #
Прально один PE, а другой ELF
(=
0
Gorthauer87 #
>Я бы, правда, в сторону #define копал бы, а не if. Всё-таки «где будет использоваться — там и должно быть собрано» — правильный метод.

А я бы потом при виде такого достал бы лопату и закопал. #ifdef жестоко ухудшает читаемость кода, ему место в подключалке различных платформозависимых хедеров.
0
b8c6 #
… и кода. Поскольку код-то тоже платформозависимый.

Как говорится — не умеешь читать такое — просто не лезь туда. И всё будет пучком. Я, вот, с таким работаю каждый день и как-то не особо жалуюсь на нечитабельность. Главное — не перегибать палку.
+5
naum #
<занудство>не могу понять. ну неужели на хабре обитает нубло, что ему надо разжевывать как чекать экспорт функции в динамик либе? ведь достаточно просто сказать — проверить наличие функции wine_get_version в библиотеке ntdll.dll</занудство>
+4
pasha_golub #
Нееет. На хабре очень грамотный люд. Но почему не дать народу возможность копи-пасте? :)
–1
kibork #
Вы конечно извените… но
ИМХО у Вас подход какой-то не правильный, писать кросс-платформенный код не так сложно в 2009 году.
Если бы это был 2002 год то можно бы было говорить о костылях в коде, и подобным хакам. Но сейчас это уже полностью излишне. А если Вы считаете что используя winapi производительность будет лутше — то это большое заблуждение
+8
pieceofsummer #
Вообще неправильный подход затачивать софт под compatibility layer, а не наоборот. Но, как видится, костылей в этом топике не признают, поэтому мы сейчас нахватаемся минусов :)
+1
naum #
WinAPI производительность по сравнению с кроссплатформенной оберткой? Да, будет лучше, во многих случаях. Либо я не правильно вас понял.
0
Gorthauer87 #
Не факт, например Qtшные проги на винде работают ну явно не медленнее winAPIшных
–2
Alaunquirie #
Только ресурсов жрут…
+3
Gorthauer87 #
Не так уж и много жрут, просто библиотек много в памяти висит, но в Никсах этой проблемы вовсе нету, например KDE4, если отключить всякие службы индексирования, вполне себе 180-200 мегабайт занимает в памяти
+1
Alaunquirie #
Ну мы про WinAPI, в никсах её без костылей нету. Так что… ;)
0
naum #
Это как так? Прошу обоснование.
+1
Alaunquirie #
Все использованные в программе библиотеки QT целиком и полностью забиваются в память и там сидят. :)
+4
pasha_golub #
Я с уважением отношусь к Qt и, вообще, к другим флагманам кроссплатформенной разработки. Но, ребята, приложение написано. Вылизано. В него вбухано прорва времени и сил. Создано туча наработок. Неужели кто-то действительно думает, что всё это можно за сколь-нибудь разумное время портировать на Qt?
0
kibork #
Если приложение имеет хорошую, продуманую структуру то очень вероятно что даже в почти автоматическом режиме хотябы портировать можно.
В крайнем случае быстро зделать пару враперов а потом уже переделывать если захочется, зато сразу потдержка популярных платформ.
0
pasha_golub #
Приложение имеет. Назовите Вашу цену и сроки. Забыл добавить, что приложение написано на Delphi.
0
kibork #
Ну я как бы не предлагал своих услуг.
Одна из первых ссылок в google:delphi to qt

>>One way might be to study the source for the FreeCLX open source project. It contains an >>implementation of the VCL using Qt. So if you are curious which Qt widget maps to a VCL >>type, that should get you on your way. Note, however, that Qt 2.x.x used multiple >>inheritance (no longer true in current Qt), so the FreeCLX interfaces to Qt via a special l>>ibrary to flatten this out.
stackoverflow.com/questions/619272/qt-for-delphi-developers

сам ничего не знаю об этом но звучит заманчиво
0
pasha_golub #
сам ничего не знаю об этом но звучит заманчиво

Увы, не звучит. Я не думаю, что под Qt портирован DevExpress (хотя бы!).
0
kibork #
Ну я не говорил что совсем ничего делать не нужно. Но Вы затачиваясь по wine Вы же тоже код пишете?
>>сам ничего не знаю об этом но звучит заманчиво
я не пишу на Delphi, соответственно никогда не интересовался, но думаю Вы не первый кто столкнулся с этой проблемой.
Чесно говоря нужно еще посмотреть, если DevExpress построен на самом VCL то может даже соберется… Но как говорили уже другие затачиватся по wine врядле стоит. Учитывая что он хороше развивается, то править прийдется постоянно.
0
pasha_golub #
Ну я не говорил что совсем ничего делать не нужно. Но Вы затачиваясь по wine Вы же тоже код пишете?

Мы не используем «костылики», как тут выразились. Мы отключаем функционал, заточенный на, отсутствующие, вещи. Вместо этого мы предлагаем пользователю доставить\допилить Wine так, чтобы приложение работало на максимум.

Например, обнаружили отсутствие MDAC — сообщили пользователю, что приложение не сможет открывать файлы MS Access.

Обнаружили Wine — предложили пользователю смотреть хелп в браузере вместо CHM viewer'а.
0
pasha_golub #
Наверное, туманно выразился. Мы не используем никаких фичей Wine, чтобы сделать нечто. Мы только определяем факт его присутствия, список необходимых деталей, и выдаем пользователю инструкции по утстранению\применению.

Сами же, избавь Бог, ничего не проворачиваем «внутре» через wine_xxxx методы.
+1
Gorthauer87 #
Qt 2.x? Не это невозможно, проще с нуля переписать
0
naum #
Стоп :) Давайте лучше на примерах.

Qt в некоторых ситуациях использует WinAPI (когда может и имеет смысл) — это раз. Следовательно получаем падение производительности (незначительное) в виде накладных расходов (профайлить лень, но думаю это логично, можно посчитать кол-во проверок / небольших оберток / вложенность вызовов).

В других ситуациях Qt реализует свой функционал. Допустим растеризатор (если мне память не изменила). Сравнивать его с WinAPI уже имеет смысл (все-таки с GDI давайте, потому что GDI+ в пролете как фанера). Вот тут уже можно статью оформить )) Не буду голословен, но есть вероятность того, что Qt на 3-5% будет в выигрыше по некоторым синтетическим бенчам.

Тяжело сравнивать Qt и WinAPI, все-таки. В любом случае кроссплатформа (фреймворки/тулкиты) дает просадку. Небольшую в большинстве случаев, но в среднем по палате будет в ауте.
0
Gorthauer87 #
Qt могут давать и выигрыш за счет не юзания каких то тормозных или глючных фич winAPI. Тем более если охота отвязаться от винапи при рисовании формочек, то можно вообще графическую систему openGL использовать, fps она дает очень неслабый, но при этом визуально умудряется подтормаживать, где затуп я незнаю.
А вот как делать бенчмарки я даже не представляю, нужно как то сформулировать одинаковую задачу.
Просадку они будут давать, если писать приложение руками правильно, а такое крайне редко встречается, особенно в случае с winAPI, который сам то являет собой образец не очень удачного дизайна и кода
Кстати логичнее было бы Qt сравнивать с MFC, и чуется мне, что последних бы он порвал
–2
zeroed #
зачем пользоваться линуксом, если пользуешься приложениями из windows? вот никогда не пойму использование wine. я для себя решил, что либо все нативное, либо винда, если нужно хоть одно приложение под wine.
0
VolCh #
Если Линукс нравится, а приложение нужное, или наоборот, Линукс нужен, а приложение нравится?
0
iNight #
Ну, какбэ КО, подсказывает, что можно использовать виртуальные машины, например бесплатный VirtualBox.
0
ruzzz #
По вашему приложение будет работать быстрее в виртуальной машине, чем под Wine'ом (если оно конечно способно под ним работать)?
0
iNight #
Смотря конечно какое приложение. Но Под VM оно точно будет работать, а под Wine, может звёзды и не сложатся, и оно вообще не запустится.

По крайней мере, всё то, что я запускаю в виртуальной машине работает прекрасно (ну кроме компиза:) )
0
mephisto #
Многие игры отлично работают под wine и даже не запускаются под VirtualBox, ибо поддержка 3д нужна =)
+1
pieceofsummer #
В VirtualBox вроде же допилили поддержку 3D?
0
mephisto #
Утверждают что допилили.
Однако я после ~2 часов половых сношений с виртуалбоксом так и не сумел заставить запускаться даже хотя бы приложения OpenGL.
+1
nekt #
У меня получилось запуститься. Жду следующей версии, чтобы можно было поиграть :)
0
mephisto #
Напишите хабратопик о том, как вам это удалось =)
0
nekt #
на топик не потянет. Ни во что толковое поиграть так и не удалось.
0
mephisto #
Ну тогда в личку =)
opengl работал?
у меня просто вообще в виртуалбоксе несмотря на все танцы с бубном, поддержка opengl так и не появилась.
0
Pono #
У вас именно проприетарное издание (в OSE этого нет), выставлена соответствующая галочка в свойствах виртуалки (display — enable 3D acceleration) и стоят последние guest additions?
0
mephisto #
версия бинарная (думаю это и есть проприетарная), галка стоит, guest additions тоже.
на хосте (linux) стоят дрова видюхи и отлично работают игры под вайном (ну не все, а те которые вайн умеет)
0
some_x #
А есть ещё direct 3D, вот его о точно лучше под wine запуксать
0
iNight #
Вас не поймёшь, то приложения, то игры.
Просто я сторонник такой позиции — если перешёл на линукс, то используй расово-верный софт зачем втыкать костыли, и использовать приложения которые не предназначены для этой системы. Вы для этого мигрировали?

Нет, я не чокнутый фанат линукса, и даже считаю, что OOo несомненно ужасен по сравнению с MS Ofice, а GIMP вообще анти-юзабильный!

Но всё же, должен же быть хоть какой-то здравый смысл, и для виндовых приложений и игр, лучше использовать винду, как не крути.
0
mephisto #
Ну лично мне категорически лениво каждый раз перезагружаться в винду ради того чтобы поиграть.
А постоянно сидеть на ней — мало удовольствия.
Поэтому запускаю игры под вайном, WoW например.
+1
Agent_Smith #
На десктопе стоит линукс, все устраивает, все отлично. Но для учебы и текущего проекта надо писать на С#. Всякие МоноДевелоперы и т.п. костыли мне не удобны. Для этих целей у меня есть виртуалка, с лиц. ХР и лиц. ВизуалСтудией 2008.

С одной стороны я рассово чист, с другой пусть и не опен сорс, но и не варез.
+1
some_x #
> для виндовых приложений и игр, лучше использовать винду, как не крути.
Да гду лучше то. Мне нужен 2gis(например), на кой хрен мне винда далась для этого?? У меня ОС линукс, я ей пользуюсь. И запускаю нужные мне приложения всеми доступными способами.
+1
VolCh #
А разница? Не, конечно, то что не запустилось под вайном, если сильно нужно, то можно и XP например поднять в виртуалке, но а почему бы сначала под вайном не попробовать?
0
pasha_golub #
Опыт показывает, что под Wine'ом можно запустить практически любой неспецифический софт.

Под спецефичиским же я разумею: игры; драйвера; любое ПО, работающее с железом; ПО требовательное к железу.
–6
Sap_ru #
… работающее ПО
0
forefinger #
Запустить — то можно, но если разработчики этого «любое неспецифическое ПО» начнут разнообразные выкрутасы и фенечки изображать, то может получиться что оно вроде бы и запускается и работает, но работать с ним уже просто не возможно/не удобно/не комфортно/etc.

P.S. в моем конкретном случае — не возможно работать в вине с, казалось бы, безобидной прогой — манагером БД, поэтому для него запускается виртуалка.
+2
pasha_golub #
Да, безусловно. Но я в посте описал позицию разработчика. Он (разработчик) не может усилием воли вложить искру разума в пользователей. Была потребность — реализовали. Может человек просто хочет пощупать приложение, а живет не под Windows. Мы ему поможем чем можем.

Опять же очень почётно, как по мне, иметь Платиновый статус в Wine Application Database.
0
mephisto #
Все бы разработчики были такими как вы — я был бы счастлив =)
+1
pasha_golub #
Все бы разработчики были такими как мы — я бы остался без работы :))
0
nekt #
можно было бы начать писать стихи или рисовать :)
+4
pieceofsummer #
Чтобы помочь таким людям, сделайте лучше патч для Wine. Тогда и костыли не потребуются.
0
GaMBiT #
А вот теперь скажите, как мне пользоваться вендовой программой Traffic Inspector, если мой провайдер не хочет с нее уходить и провайдеров больше нет?! У нас не Москва, провайдер всего один на маленький городок.
Если Вам не нравится wine, то не обязательно что другим он не нужен.

Также я запускаю чат локалки CommFort, т.к. его тоже менять никто не хочет.
0
smartly #
рафик инспектор, говорят, заменяется curl-м. Вся функция рафик инспектора в периодическом делании http-post с логином паролем для привязки ИП-адреса к аккаунту на ограниченное время.
0
bondbig #
Может вы не про тот инспектор подумали? Автор коммента имел в виду www.smart-soft.ru/, насколько я понимаю.
0
smartly #
Да вроде именно этот. Сам я его не видел, но один из провайдеров в моём городе его использует. Кто-то пускает его под вайном, кто-то попросил провайдера отключить ему необходимость в этом инспекторе, а кто-то симитировал его функциональность.
0
bondbig #
Что значит «отключить ему необходимость в этом инспекторе»?
ТрафикИнспектор — это в первую очередь сертифицированная биллинговая система + прокси и шлюзовый антивирус по желанию. Как вы «сымитируете» функционал биллинга при помощи curl?
0
smartly #
Билинг в первую очередь сертифицированно работает на сервере. Клиент лишь авторизуется, чтобы привязать IP/MAC к акаунту. (экономия на VLAN-свичах).
Авторизуется он через HTTP. Если разобрать протокол, то можно то же самое делать curl-м

По просьбе клиентов провайдер индивидуально отключает динамическую привязку и включает статическую. Так увеличивается риск подмены mac/ip, но пропадает проблема рафик-инспектора под вайном.
0
bondbig #
а, так речь шла о КЛИЕНТЕ, мать его.
+1
GaMBiT #
А вот теперь скажите, как мне пользоваться вендовой программой Traffic Inspector, если мой провайдер не хочет с нее уходить и провайдеров больше нет?! У нас не Москва, провайдер всего один на маленький городок.
Если Вам не нравится wine, то не обязательно что другим он не нужен.

Также я запускаю чат локалки CommFort, т.к. его тоже менять никто не хочет.
+8
zloe #
я сделал проще — стал главным админом своего провайдера...)
НЛО прилетело и опубликовало эту надпись здесь
0
ivlis #
Ну вот есть прога для заполнения анкеты на ЗП. Догадайтесь для какой операционной системы. Ставить венду ради exe в пару мегабайт — как-то уныло.
0
BmW #
Заполняемая PDF'ка на этот случай более православна.
0
nekt #
а вот эту технологию я как-то пропустил… Что есть заполняемая пдфка и как она делается?
0
BmW #
www.fms.gov.ru/documents/passport/zp25.pdf тут вот пример, как раз с загранпаспортом.
Почитать можно у Adobe: help.adobe.com/en_US/Acrobat/9.0/Standard/WS58a04a822e3e50102bd615109794195ff-7dd2.w.html и во всем разделе вокруг. Только вот для создания таких документов все дружно предлагают что-то купить, например Adobe Acrobat.
0
ivlis #
Вот только платить за то чтобы заполнить анкету ещё более уныло.
0
BmW #
Где кто просит заплатить за заполнение/использование? Вы о чем?
0
ivlis #
Чтобы заполнить форму надо вроде иметь Проф версию акробата?
0
BmW #
Чтобы создать форму — надо. А заполнял я в evince (дефолтный просмотрщик документов в Gnome), ну еще до кучи в Adobe Acrobat Reader(бесплатный) и Foxit PDF Reader. Везде успешно заполнялось.
0
ivlis #
Это интересно, не знал! Спасибо!
0
BmW #
Ну вот 2gis не делают версию под linux, а прогрмма полезная, что мне, винду из-за них ставить?
0
rule #
Я работаю в ОС. В процессе работы я пользую 45 приложений (например) и вот мне потребовалась одна единственная и не заменимая, которой нет в моем любимом линуксе и маке. И она мне нужна в контексе, не постоянно а так: включил — выключил. Вы предлагаете каждый раз заводить ось? пусть в виде перезагрузки или запуска виртуалки. Извольте — она очень даже ничего себе работает под вайном — почему бы не пользовать. Но если есть аналоги даже немного хуже — то естественно предпочитаю аналоги.

Я опять повторяю — во всем нада знать меру, крайности — удел подросткового или шизофренического сознания (иногда это синонимы :-) ).
+2
onichan #
Ух, по моему самое полезное из того что сегодня прочитал.
Красивая фраза с намеком «Почему? Потому что мир не идеален...»
+2
Goodkat #
мир — идеален!
+1
pasha_golub #
Согласен. Не идеально наше восприятие мира. :)
0
savostin #
А есть каки-нибудь методики определить почему приложение может не работать под Wine? Кроме как запустить VS под Wine и отладить? %-)
0
pieceofsummer #
> почему приложение может не работать под Wine?
известно, почему! :)
кроме того, в разных версиях Wine оно может не работать (или, если повезет, работать) по-разному.
0
savostin #
я ж не спрашиваю почему моё приложение не работает, а есть ли методики… Причин всегда много и разных…
P.S. я с точки зрения разработчика неработающего приложения спросил, «если чо».
+3
pieceofsummer #
> Причин всегда много и разных…
Причина в данном случае одна — Wine не поддерживает (или поддерживает криво) что-то, что вы использовали в своем приложении.
«Не работать» приложение тоже может по-разному — может вываливаться, может вести себя не так, как задумывалось.
Если вываливается, то первым делом, естественно, нужно анализировать стек трейс — обычно это может быть вызвано спецификой реализации в Wine какой-нибудь API-функции. Также стоит обращать внимание на версию, с которой появилась та или иная функция в Windows — не стоит задирать планку, если нужна переносимость. По возможности стоит заодно проверить программу на более младших версиях Windows.
Заодно стоит уделить внимание корректности обработки ошибок — то, что всегда безошибочно отрабатывает в Windows, может вести себя иначе под Wine. Особенно это может касаться COM — нужных классов может просто не быть.

Если же программа работает, но ведет себя неправильно, то тут сложно дать какие-то общие рекомендации — нужно анализировать логику программы. Добавить отладочный вывод в консоль будет не лишним.

P.S. а что за приложение, если не секрет?
0
savostin #
Спасибо за развернутый ответ.
Ответить взимностью не могу — программа есть собственность клиента и ему вдруг захотелось поиграться с ней под *nix, чего есессно ТЗ не предусматривало. Вот теперь дилемма — переделывать всё кроссплатформенно или пройтись по граблям.
0
savostin #
может есть где-то какой-то списочек чего следует избегать при разработке под win, если планируется запускать под wine?
0
naryl #
Если *планируется* запускать под wine, то лучше избегать Wine и некроссплатформенныхз библиотек и технологий. А если *внезапно* нужно запустить под Wine, то, очевидно, список искать уже поздно.
+2
naryl #
Вот гайдпо портированию с WinAPI на Winelib с кратким списком «чего избегать»: www.winehq.org/docs/winelib-guide/index
+1
naryl #
И, конечно же, Вам всегда готовы помочь на #winehq @ freenode: webchat.freenode.net/
+1
pasha_golub #
Советую ещё обратить внимание на скрипт winetricks. Это просто-таки панацея в большинстве случаев, я гарантирую это. :)
0
savostin #
Полезняшка, спасибо.
0
naryl #
Запустить и посмотреть вывод. В подавляющем большинстве случаев, при падении приложеня, Wine выдаёт подробнейшую информацию о случившемся.
0
TiGR #
Энто если установлены debug symbols (или вайн собран из исходников). В противном случае информация не такая уж и подробная.
0
naryl #
Прошу прощения. Просто я кроме Gentoo уже два года ничего не видел %)
+2
semenovs #
Не видывал окна прозрачней.

прямо белый стих какой то
0
gunya #
Обоже, графические смайлики на хабре
+3
TiGR #
У разработчиков желающих добиться, чтобы их софт работал лучше в линуксе есть три варианта (точнее два, с подвариантами):

1. Переход на кросплатформенные фреймворки (например тот же Qt)
2. Работа с вайном:
2.1. Оптимизация программы под вайн.
2.2. Оптимизация вайна под программу :)

Второй вариант мне кажется значительно более продуктивным, т.к. вы решаете проблемы не только здесь и сейчас, но так же избавляете себя от необходимости решать их в будущем, я уж не говорю о благодарных пользователях линукса и разработчиках других программ… ;)

По крайней мере, в случае обнаружения багов как минимум стоит найти соответствующий баг-репорт на bugs.winehq.org или отправить новый.
+1
zloe #
извините за оффтоп, но может кто пускал 1С 7.7 под вайном?
+2
kossmak #
— Здравствуйте, это канал об аниме?
© bash.org.ru
0
zloe #
что-то типа того)
0
pasha_golub #
Народ повсюду пиарит Этерсофт.
+1
rule #
Паша прав, Этерсофт затачивает вайн специально ядл работы а 1С. Пробовал — работает. Причем у них очень богатая поддержка дситрибутивов.
–1
silentroach #
Можно сделать проверку наличия специальной папки в реестре и это, скорее всего, будет быстрее.
0
pasha_golub #
Отнюдь. Реестр тоже хранится в файлах. А библиотека ntdll.dll стопроцентно уже в памяти. Хотя было бы интересно посмотреть на замеры.
0
silentroach #
В общем-то не столько важен принцип узнавания Wine сколько сохранение результата без повторных дерганий библиотек или реестра :)
0
pasha_golub #
Воистину! :)

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