Детектив: не запускается XPD

Автор mclac, 25 Нояб. 2011 в 17:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

zap

Если название другое, то пофигу.

Остаётся непонятным, почему C:\Windows\System32 имеет приоритет перед первым каталогом, перечисленным в PATH?
Бред какой-то.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

Цитата: zap от 05 Дек. 2011 в 18:46
Если название другое, то пофигу.

Остаётся непонятным, почему C:\Windows\System32 имеет приоритет перед первым каталогом, перечисленным в PATH?
Бред какой-то.

Потому что кто-то даже ссылку на msdn не прочёл, вяндааааааа!

zap

У меня инфа из MSDN в голове не задерживается :D
Фу, какая гадость эта ваша виндовс.
Тогда почему не работал XPD из твоего архива, где все DLL'ки были сложены в кучу вместе со скриптом?

P.S. Такой вариант: если в свойствах запускающей иконки в качестве "текущего каталога" прописать каталог, где лежат gtk'шные библиотеки, в т.ч. zlib1.dll?
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

Цитата: zap от 05 Дек. 2011 в 19:05
У меня инфа из MSDN в голове не задерживается :D
Фу, какая гадость эта ваша виндовс.
Тогда почему не работал XPD из твоего архива, где все DLL'ки были сложены в кучу вместе со скриптом?

P.S. Такой вариант: если в свойствах запускающей иконки в качестве "текущего каталога" прописать каталог, где лежат gtk'шные библиотеки, в т.ч. zlib1.dll?

Постараюсь объяснить:
1. загрузка библиотеки из папки с текущим исполняемым модулем(с файлом *.pyd в нашем случае)
2. загрузка библиотеки из текущей папки(из которой запускали xpd), но это в старой винде, в новой пропатчили передвинув на позицию между 5 и 6 из-за потенциальной дыры и множественных хаков с подменой системных dll.
3. загрузка из системной папки 32битной версии винды (windows\system32)
4. загрузка из системной папки 16битной версии винды (windows\system), не работает в семёрке, и правильно, нефиг.
5. загрузка из корневой папки системы (windows), тоже было удалено обновлениями.
6. загрузка из папки указанной в переменной PATH(т.е. что вы и вставляли).
Те списки, что я выкладывал - это копирование библиотек в 1ю позицию, удалять ничего не надо.
А тот патченный вариант, что я выкладывал должен загружать из 2й позиции, но только в старых не пропатченных системах, в обновлённых он не работает из-за позиции между 5 и 6.
Ну и ваш вариант в винде не работает ибо в 6й позиции.
Надеюсь теперь-то понятно?
PS: Винда не наша, мы и гентой прекрасно обходимся(и бубунтой не брезгуем на ноуте).

zap

Я понял, был не в  курсе насчёт того, что некрософт сдвинули текущий каталог в последнюю позицию. В той ссылке на MSDN'е текущий каталог на втором месте.
Я согласен, что это вопиющая дыра, и я бы вообще убрал текущий каталог из списка, как в нормальных операционных системах.
Бардак же в том, что нет способа добавить в пути поиска приоритетный путь! В Linux есть куча переменных окружения, влияющих на динамический линкер. Был бы в винде аналог LD_LIBRARY_PATH, не было бы никаких проблем.

Получается как обычно, грязно хакнули винду чтобы решить вопиющую проблему с безопасностью, в результате вообще не осталось способа подсунуть программе приоритетный каталог с DLL'ками.

Убожество {tm}.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

Цитата: zap от 05 Дек. 2011 в 21:23
Получается как обычно, грязно хакнули винду чтобы решить вопиющую проблему с безопасностью, в результате вообще не осталось способа подсунуть программе приоритетный каталог с DLL'ками.

Убожество {tm}.
Каталог нельзя, но отдельную dll можно, опять же выше давал способ через добавление ключа в реестр.

zap

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

Поражаю масштабностью некопмпетентность (ц) из лички

DarthGray

Ну в конце концов всё это можно в отдельно стоящий ехе-шник скомпилировать
Понятно, что при этом теряется принцип открытого исходного кода
Но может оно и мало кому надо?
За то как раз для "домохозяек" получится :D
Различие между теорией и практикой на практике гораздо больше, чем в теории.

mevial

Цитата: DarthGray от 06 Дек. 2011 в 10:45
Ну в конце концов всё это можно в отдельно стоящий ехе-шник скомпилировать
Понятно, что при этом теряется принцип открытого исходного кода
Но может оно и мало кому надо?
За то как раз для "домохозяек" получится :D
Так были бы си, и то программист обязан знать "Убожество {tm}" для домохозяек, т.е. вы вынуждаете человека изучать винду, изучать виндовое API(а оно не такое уж для домохозяек), писать несколько программ под несколько платформ... Многовато что-то для простого энтузиазма. Человек написал на том, что знает, под свой телефон, линуксоидам повезло, во всех современных линуксах есть питон да и без gtk не обходится. Далее человек дал вам инструкцию как установить питон и gtk на винду(а ему пришлось и самому это изучать), и вы его ещё упрекаете в том, что это не один exe искаропки? В линухе у меня xpd встала в 2 клика, и 3й клик на иконке для запуска, всё, а вот вяндааааааа... Тут нужно подпрягать прогеров под вянду, чтобы они делали кастомный инстоллер, который копировал бы нужные dll в соответствующую папку с pyd файлом, при этом помнил куда установлены питон и gtk. Я вот прошивалку смартбмс написал под линукс, и не горю желанием изучать досконально вянду, чтобы переписать под неё, для домохозяек. Если кто даст реальное АПИ для работы с ddc то напишу, а так ну его в баню.

DarthGray

Цитата: mevial от 06 Дек. 2011 в 12:46
.. т.е. вы вынуждаете человека изучать винду, изучать виндовое API(а оно не такое уж для домохозяек), писать несколько программ под несколько платформ...

Ничего я никого не вынуждаю, с чего это вы взяли?
Ну не знаю я ваш питон :ah:, я считал что любой язык высокого уровня позволяет скомпелировать запускаемую программу
А си тут ваще не при чём. я его тоже не знаю и знать не хочу
Я только 6 ассемблеров знаю...
А под винду проще всего на вижелбейсике делать. как то баловался лет 20 назад
Различие между теорией и практикой на практике гораздо больше, чем в теории.

mevial

Цитата: DarthGray от 06 Дек. 2011 в 13:25
Цитата: mevial от 06 Дек. 2011 в 12:46
.. т.е. вы вынуждаете человека изучать винду, изучать виндовое API(а оно не такое уж для домохозяек), писать несколько программ под несколько платформ...

Ничего я никого не вынуждаю, с чего это вы взяли?
Ну не знаю я ваш питон :ah:, я считал что любой язык высокого уровня позволяет скомпелировать запускаемую программу
А си тут ваще не при чём. я его тоже не знаю и знать не хочу
Я только 6 ассемблеров знаю...
А под винду проще всего на вижелбейсике делать. как то баловался лет 20 назад
Школьный курс информатики: Языки бывают компиляторы и интерпретаторы. Компиляторы сначала собирают исполняемый файл, а потомего можно выполнить(всякие си, паскаль, некоторые варианты бейсиков). Интерпретаторы исполняют непосредственно исходник построчно, вот питон это один из них. Плюс интерпретатора, что исправить можно там же где и запускается, минус - быстродействие, но в данной задаче и при современных компах это не критично, не музыку оцифровываем с геймпорта. А был бы компилятор, то можно было бы все библиотеки статиком зафигачить в один exe файл... О пошла мысля, щас попробую портабельную версию xpd собрать, в одном exe вместе с питоном, гтк и сериалом. :)

DarthGray

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

mevial

Итак, собрал портативную версию в одном exe файле, правда весит кошмарно 52МБ. Оптимизировать и почистить можно, снапшот виртуалбокса сделал, но сначала пусть кто-нибудь проверит данный вариант как есть, вернув старенький zlib1.dll в его "законное" место в system32.

zap

Есть специально обученный компилятор для Питона, по сути он выдёргивает всё что нужно и складывает в один отдельный файл.
Называется py2exe.
Но он не сработал на XPD, я пробовал как-то давно. Вроде всё сделал, но результат не запускался. Наверное, py2exe запутался в функциях gtk.

А этот екзешник чем собран? Там, боюсь, Питон полезет за своими настройками в реестр, они реплицируются?

P.S. Уау, какой-то вмваре тул. Под вайном запустился влёт :D
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

DarthGray

Цитата: mevial от 06 Дек. 2011 в 16:55
Итак, собрал портативную версию в одном exe файле, правда весит кошмарно 52МБ. Оптимизировать и почистить можно, снапшот виртуалбокса сделал, но сначала пусть кто-нибудь проверит данный вариант как есть, вернув старенький zlib1.dll в его "законное" место в system32.

Вернул zlib1.dll в зад, xpd.pyw есс-но не запускается
Ваша портабельная сборка запустилась сходу
Правда на англицком...
Различие между теорией и практикой на практике гораздо больше, чем в теории.

oburmistrov

Цитата: mevial от 06 Дек. 2011 в 16:55
Итак, собрал портативную версию в одном exe файле, правда весит кошмарно 52МБ. Оптимизировать и почистить можно, снапшот виртуалбокса сделал, но сначала пусть кто-нибудь проверит данный вариант как есть, вернув старенький zlib1.dll в его "законное" место в system32.
Здравствуйте. Проверил портативную версию на двух своих компьютерах, на которых не запускался XPD.
XPD запустился без проблем. Огромное спасибо!!!!!!

mevial

Сказал А, придётся говорить и Б... Буду пробовать сделать её компактнее и с русским. Zap, от чего зависит выбор языка? Винда у меня официальная русская, без муёв.

zap

Язык берётся откуда-то из реестра. По-моему из HKEY_CURRENT_USER\Control Panel\International
Как там эмулирует реестр вмтварь я не в курсе.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички