|
|
|
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Пишу свой плагин для QtCtreator.
Суть работы плагина отображать все "зависимости от DLL" текущего открытого проекта и при необходимости скопировать все DLL в папку с exe проекта - т.е. для удобства переноса приложения на другие компьютеры. Вопрос : как получить из плагина полный путь к исполняемому файлу exe текущего открытого проекта, текущей сборки ( debug/release ) ? На данный момент готово : http://www.youtube.com/watch?feature=playe...p;v=vyqmNb5sQ2Y Но путь определяется не совсем верно... Это сообщение отредактировал(а) Avazart - 18.5.2013, 20:11 |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Avazart, зачем создаешь одинаковые темы на разных форумах?
Ты нашел решение, напиши его сюда и пометь тему решенной. |
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
На тот момент когда создавал решения небыло ...
В дальнейшем ответ нашелся на другом форуме... |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Avazart, ты так и не сделал то, что я попросил.
|
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Собственно, уважаемый, какие притензии ко мне ? |
|||
|
||||
Majestio |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 83 Регистрация: 19.12.2010 Репутация: нет Всего: нет |
Правило хорошего тона: нашл решение - отпиши! Создал кростпост на 5 -375 форумах, отпишись. Так правильно. |
||||
|
|||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Издеваетесь ? Могу кинуть ссылку на решение, если оно так интересно и если конечно это не противоречит правилам форума ( ссылаться на др. форумы ) Это сообщение отредактировал(а) Avazart - 19.6.2014, 17:48 |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
нет. Это стандартная практика. Просто люди поиском будут находить твой вопрос, а он без ответа. Это не хорошо.
|
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Тогда нет проблем :
http://www.prog.org.ru/topic_22168_120.html Если обстоятельства сложатся, когда доделаю выложу ссылку на сам плагин и его исходники. Это сообщение отредактировал(а) Avazart - 23.5.2013, 00:23 |
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
||||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Плагин интересный и, возможно, очень даже полезный (особенно для новичков). Но, к сожалению, судя по видео, еще не совсем готов.
Рекомендую немного поменять тематику этого плагина. Сделать не только поиск зависимостей, но и сборку готового пакета (для начала - просто архива программы и всех необходимых библиотек; затем можно и msi замутить или Qt Installer Framework заюзать). В этом случае его можно будет смело двигать в основное дерево исходников Qt Creator. |
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Что именно вам кажеться не готовым ? Что касаестся направленности на сборку пакета, тут возникает куча вопросов. К примеру если делать архив то каким архиватором? Ибо от него будет зависеть работоспособность плагина. Если делать инсталятор(какой инсталятор использовать?) то тут возникает куча вопросов куда ставить все добро и как распределять. Да и вообще стоит делать инсталятор когда можно такскать просто папку с программой? Так как наряд ли новички осилят сборку QtCreator и плагина, решил выложить программу: http://www.cyberforum.ru/blogs/131347/blog2457.html |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Есть устоявшиеся стандарты. В Windows - это ZIP, в *nix - это tar.bz2. А потом, архив - это не самоцель. Для начала достаточно сделать копирование всех необходимых файлов (в т.ч. и программы и плагинов) в указанную пользователем папку с воссозданием дерева каталогов, а уже затем можно думать о сжатии.
Есть стандарты. Под Window - это MSI. Под линукс - это rpm и dpkg (остальные менее распространены, да и не под *nix ты делаешь).
|
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Плагин как раз и копирует длл с воссозданием дерева в папку с экзешником. И никто не мешает потом разработчику скопировать их куда надо и зархивировать тем арихиватором или инсталятором который он предпочитает, и с теми настройками которые ему нужны. Дело в том что стандортов нет, все что вы сказали это не стандарты, а лишь то рапростанено как частое решение. Лично мое мнение если прога не пишит в реестр и не производит каких-то магических действий с системой, то в инсталяторе нет необходимости, в остальном по обстоятельствам. Существуют таки довига видов инсталяторов и архивов способов упаковки/распаковки, и я не вижу смысла привязывать плагин еще к какому то одному из них.
Я не об этом. А о том что к примеру, если ставить 10 ваших программ то вероятно в папке кадой будет лежать пакет из Qt-DLL-лок что не хорошо ибо их можно было бы использовать совместно - один пакет для всех программ написанных на Qt данной версии. Не хорошо ложить на плечи плагина то что должен делать разработчик: а именно выбор инсталятора, то как и куда распаковывать программу, ведь программа программе рознь. Это сообщение отредактировал(а) Avazart - 19.6.2014, 16:52 |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
именно для этого плагины и существуют. Если кому не понравится твой установщик, будут использовать другой, а плагин отключат/не установят.
Это называется общие библиотеки. Они, обычно, ставятся куда-нибудь в c:\windows\system32 и в реестре ставится счетчик использований. Но это можно сделать только из инсталлятора. Кстати, только с помощью MSI установщика можно организовать централизованную установку через Active Directory. Имей в виду. |
|||
|
||||
Avazart |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Ну я ведь не для этого делаю его что бы им не ползавались. Мало того что писать установщик писать - это мартышкин труд, кроме этого в зависимости от особенностей проекта (не только предпочтений разработчика, а разработчик не простой пользователь) может быть лучше использовать то или иной установщик.
У на вируталке XP как я помню там не было вообще архиватора изначально. Кроме того я имел опыт написания инсталяторов, и к примеру было такое что на одной из машин просто не было папки %PROGRAMFILES% (проверка 32/64 была). Это называется фиговый стиль- срать в системные папки. Кроме того если что-то где-то удалится руками и пиши пропало. Это сообщение отредактировал(а) Avazart - 20.6.2014, 14:37 |
||||
|
|||||
bsa |
|
||||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Обычно, такие установщики сами определяют зависимости, на сколько я знаю. А если не определяют, то используется какая-то бесплатная система установки (Nullsoft, winrar-sfx и пр), и, я думаю, разработчик был бы рад иметь готовое решение "из коробки".
Фиговый/не фиговый, а он стандартен и предусмотрен MS. Как вариант, ты можешь сделать папку c:\program files\Common files\Avazart Shared\qt, прописать ее в переменной PATH и пихать библиотеки туда... Ты часто что-то удаляешь руками из ...\system32? А потом, если ты сделал это, то виноват в неработающей программе только ты. |
||||
|
|||||
Avazart |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Расзработчик не обычный пользователь, врядли ему нужны довески. Лично я всегда делал с помощью InnoSetup и скрипт писал для него руками ибо в зависимости от программы нужно было делать разные вещи. Был такой момент когда небходимо было определить перед установкой конфмгурацию компа.
Ты не понял заказчик утверждал что такой папки вообще нет на машине. Что касается реестра то тут ошибится еще легче. Ну это качественно разные решения, о втором я уже давно подумываю.
Все просто инсталятор не сработал по какой либо причине и в реестр счетчик не минусанулся- в итоге пользователь скорее всего полезит руками удалять, удалив саму программу но не изменив счетчик, и пакет в ~200M останится лежать в системной папке. Это сообщение отредактировал(а) Avazart - 20.6.2014, 16:55 |
||||
|
|||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Провел обновление программы для сборки DLL
http://www.cyberforum.ru/blogs/131347/blog2457.html Просьба отписываться, если кому-то интересно и он протестил. Это сообщение отредактировал(а) Avazart - 30.9.2014, 14:41 |
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Avazart, хорошая программа, но
1) Программа запускает мой exe-шник в Вашем каталоге и, соответственно, не видит своих файлов (да ещё и гадит логами в Ваш каталог) 2) Если бы она ещё умела смотреть какие файлы я открывал (БД, конфиги и т.п.) - то вообще бы ей цены не было -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
(1)- Понял, нужно будет поправить этот момент. Насчет (2) вообще не врубился, можете пояснить? |
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Кроме dll моя программа открывает н-ное количество файлов, например - читает конфиги из подкаталога cfg, открывает БД и т.п. Хотелось бы, чтобы Ваша программа умела отслеживать, какие файлы моя программа открывала (как это делает Process Explorer) и так же давала бы возможность их скопировать (оставляя структуру каталогов). И ещё один момент: есть у меня программа картографии. При запуске из-под DLLCollector'а получаю это Неплохо было бы разделить dll-ки, лежащие в каталоге с программой от других. Дело в том, что картографию MapX я ставлю отдельным инсталлятором, и мне не нужно тянуть в свой проект файлы из Program Files\Mapx\... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
1.) Нужно подумать возможно ли такое, хотя по-моему тольк оразработчику известно как программа и откуда должна тянуть другие файлы и как они должны размещаться отноительно exe. 2.) Так ваша программа вроде не на Qt написана, естетсвенно что почти все зависимости будут в "other" Это сообщение отредактировал(а) Avazart - 1.10.2014, 10:25 |
|||
|
||||
borisbn |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
А Вы не смотрели Process Explorer ?
Мне также известно где и какие dll-ки программа юзает. Вы же делаете автоматизацию. Сборку части файлов (dll) Вы сделали, так почему бы не сделать со всеми файлами, которые нужны exe-шнику ?
Да, не на Qt, но смысл не в этом. Смысл в том, что в этом Other неплохо бы разделить по каталогам, чтобы я мог выделить для копирования один каталог и снять выделение полностью с другого (в моём примере - с C:\Program Files\Mapx\...) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
DLL грузятся в начале прилложения, когда загрузятся файлы абсолютно не известно. Да и зачем копировать то что и так лежит рядом? Зачем вобще смотреть на те файлы которые лежать в той же папке и тем более делать разделение на каталоги? Насколько часто в приложении на Qt нужно копировать отделными каталогами? Это сообщение отредактировал(а) Avazart - 1.10.2014, 10:46 |
|||
|
||||
borisbn |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Не все dll грузятся в начале. Есть динамически подгружаемые. Для этого у Вас и есть отдельно кнопка Update.
Если программа использует только Qt, то не нужно, а если использует картографию, БД типа Oracle, или любые компоненты, которые устанавливаются отдельно, то DLLCollector сваливает всё в кучу и мне приходится руками убирать галочки с кучи dll-лек из каталогов MapX, Oracle и т.п. В общем, мне так кажется, что Вы не очень хотите этим заниматься Попробую по свободе сам. Вы не против ? У Вас не проприетарный софт ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
kuzulis |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
Гы. Я для аналогичных целей использую Qbs и не нужно всяких плагинов и прочее.
Например в моих последних проектах (под Windows) использую WiX Toolset для создания инсталляторов (в принципе, любой сложности). Например, в QBS можно накидать "скриптики/проектики/модули" которые будут искать нужные рантайм библиотеки/плагины Qt а также рантайм от VS ипрочее. Т.е. в одном проекте сразу одним кликом можно собрать все нужные exe-шники, плагины/dll-ки и другие конфигурационные файлы, закинуть их в инсталлятор с учетом иерархии и прочего, собрать инсталлятор с любой сложностью (как с установкой и запуском сервисов, если они имеются в проекте, с регистрацией в реестре всяких вещей, если нужно и прочее..). Т.е., мое ИМХО - в принципе, этот плагин чисто для академического интереса, к сожалению. На данный момент лучше переходить на QBS вместо qmake, так как это дает гораздо большие возможности "скриптописания", т.к. не ограничивается возможностями какого-то плагина в QtCreator. Да и в целом, проще и универсальнее: в любой момент я могу подправить JS скриптик/модуль и оно заработает. Это сообщение отредактировал(а) kuzulis - 1.10.2014, 14:10 |
|||
|
||||
Avazart |
|
||||||||||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
QBS - неофециален, да и кому интересно изучать что-то еще для того что бы только собрать DLL-ки?
Скриптописание? А на кой оно здалось, если пишешь на С++ ?
Qt и грузит плагины динамически как раз, но в отличие от файлов они загружаются где-то в начале и живут все время, а файл может открыться в произвольный момент и произвольный момент закрыться.
Ну так сугубо для Qt и писалось, для dll-лок и плагинов Qt ну и в нагрузку dll-ки компилятора.
Что-то не понял, галочки в other не должны ставится сами.
Было бы время и необходимость в этом, писал для себя ибо задрало плагины собирать.
Да как бы и выкладывал для этого вместе с исходниками. Только если где-то будете выкладывать где-то, укажите ссылку пожалуйста ссылку на блог. Это сообщение отредактировал(а) Avazart - 1.10.2014, 18:59 |
||||||||||
|
|||||||||||
Avazart |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 6.4.2013 Репутация: нет Всего: нет |
Обновил программу, теперь можно писать свои сценарии на js
http://www.cyberforum.ru/blogs/131347/blog2457.html |
|||
|
||||
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |