| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Программно узнать dependencies exe-шника |
| Автор: borisbn 26.3.2010, 07:45 |
| Собственно сабж |
| Автор: W4FhLF 26.3.2010, 08:16 |
| Пройтись по таблице импорта exe и получить список dll из которых он импортирует функции, потом по таблицам импорта этих dll и получить списки dll'ек от которых они зависят. Ну и т.д. |
| Автор: azesmcar 26.3.2010, 09:17 |
| ссылки в помощь http://www.codeguru.com/forum/archive/index.php/t-376151.html http://www.codeguru.com/forum/showthread.php?t=327497&highlight=PE+format |
| Автор: GoldFinch 26.3.2010, 11:18 |
| разумеется если программа грузит какие-то длл динамически, поиск по таблице импорта не поможет. |
| Автор: borisbn 26.3.2010, 15:16 |
| azesmcar, спасибо. скачал http://www.codeguru.com/forum/attachment.php?attachmentid=9138&d=1107632246 со второй ссылки. Всё чётко понятно. GoldFinch, ну, это-то понятно. не первый год "замужем" А всё-таки, нет ли какого-нибудь API для этого, ибо не хочется лазать по exe-шнику (напоминает хакерство в худшем смысле этого слова). Да и я не удивлюсь, если M$ изменит формат PE в Windows 8 |
| Автор: borisbn 26.3.2010, 15:58 |
| А вообще-то мне не это нужно было Кто-нибудь знает как в NSIS-скрипте узать зависимости exe-шника. можно, конечно, написать свою библиотеку в формате NSIS и подавать в неё из скрипта имя exe, но может кто-нибудь встречал подобное ? |
| Автор: W4FhLF 26.3.2010, 16:34 |
| И что ты хочешь из своей системы вытащить все нужный dll и поместить их в инсталлер? Это не очень хорошая идея. Лучше интегрировать в инсталлер необходимые packadges. |
| Автор: borisbn 26.3.2010, 22:10 |
| W4FhLF, Да, именно это и хочу. Думаю следует ввести список исключений для vc_redist например, но чтобы требуемые dll-ки Qt или ipp и т.п. встраивались в инсталлятор автоматически |
| Автор: W4FhLF 27.3.2010, 06:34 | ||
borisbn, я юзаю Inno Setup, там такого точно нет. Да я и сам не вижу смысла в этой feature. Dependencies релиза есть уже сформировавщийся набор зависимостей, который вряд будет меняться. Если и только сами библиотеки будут обновляться, но это не проблема для инсталлера, т.е. я в inno например пишу так:
Следовательно если обновляется Qt, то обновляется и инсталлер. |
| Автор: borisbn 27.3.2010, 07:23 |
| W4FhLF, у меня немало проектов, требующих инсталляторов. Проекты используют не только Qt, а ещё ipp. Есть старые проекты на Builder'е. Плюс к тому я работаю в команде, где у каждого похожая ситуация. Я бы хотел сделать один скриптик для всех, чтобы не приходилось каждый раз смотреть dependencies. В принципе как вариант можно сделать программку, копирующую все нужные dll в каталог с инсталлируемой программой, а в скрипте указать *.* |
| Автор: jonie 27.3.2010, 09:52 |
| borisbn, создатель инсталлятора должен знать все зависимости, которые использует программа....я бы не стал доверять depends-walker-ам..... |
| Автор: borisbn 27.3.2010, 10:44 |
| W4FhLF, jonie, уговорили, тем более, что у меня ещё куча динамически подгружаемых DLL. Закрываю. azesmcar, ещё раз спасибо за полезные ссылки |
| Автор: SABROG 28.3.2010, 13:34 |
| Я каждый раз мучаюсь при самостоятельной сборке QtCreator'a, пока его раз 15 не запустишь под depends.exe через F7 с динамическим профилированием, не понятно какие он .dll'ки цепляет. |