Текущий архив: 2006.11.26;
Скачать: CL | DM;
Вниз
Вопрос проектам, использующим пакеты(packages)? Найти похожие ветки
← →
Megabyte © (2006-11-02 13:21) [0]Сделал программу, кот. подгружает пакет динамически. Соответственно, основной проект делал с установкой build with runtime packages.
При запуске на другом компе программа поругалась, что не может найти библиотеку rtl.bpl, кот. используется в пакете.
1)Мне теперь надо с собой таскать все пакеты, кот. использую в проекте?
2)Если да, то где они должны хранится?
← →
MetalFan © (2006-11-02 14:27) [1]запуздырь в windows\system32 например.
← →
Megabyte © (2006-11-02 17:35) [2]Каким образом сделать так, чтобы программа искала эти стандартные библиотеки/пакеты в определенной/заданной мною директории?
Хочу хранить их централизованно в одной, созданной мною, папке!
← →
Ketmar © (2006-11-02 17:45) [3]таки добавить путь в path.
← →
Суслик © (2006-11-02 18:46) [4]я всегда держу библиотки рядом с exe.
пока проблем не было.
> 2)Если да, то где они должны хранится?
читай описание алгоритма поиска dll при загрузке с помощью LoadLibrary.
Для bpl тоже самое. Про LoadLibrary читай в msdn.microsoft.com
← →
Loginov Dmitry © (2006-11-02 20:26) [5]Megabyte © (02.11.06 17:35) [2]
Хочу хранить их централизованно в одной, созданной мною, папке!
Если пакеты стандартные (vclXX.bpl, rtlXX.bpl и т.п.), то лучше записывать их сразу в System32. Свои пакеты храни в собственном каталоге.
← →
Суслик © (2006-11-02 21:25) [6]
> лучше записывать их сразу в System32
никогда не мог понять чем это лучше :(
← →
Loginov Dmitry © (2006-11-02 23:32) [7]Суслик © (02.11.06 21:25) [6]
никогда не мог понять чем это лучше :(
А тем, чтобы не засорять компьютер кучей копий одних и тех же библиотек.
(если каждый будет поставлять вместе со своими прогами еще и кучу стандартных bpl-лок, то представляете, сколько будет хлама на жестком диске компьютера пользователя!)
← →
Суслик © (2006-11-02 23:49) [8]
> Loginov Dmitry © (02.11.06 23:32) [7]
> (если каждый будет поставлять вместе со своими прогами еще
> и кучу стандартных bpl-лок, то представляете, сколько будет
> хлама на жестком диске компьютера пользователя!)
кому какое дело, что творится в каталоге, который *пользователь* отвел для моей программы? или по твоему мнению 1-2 мб на жетском диске есть проблема для современных винтов?
не убеждает.
← →
RASkov (2006-11-03 03:38) [9][7] и [8] неверно и в то же время оба правы.
Неверно:
хранить в System32 - я могу написать длл, бпл с каким-нибудь стандартным названием - моя прога работает остальные курят.
хранить в папке с прогой - не оптимально с размерами (копейка рубль бережет)
Верно:
хранить в System32 - один файл для кучи прог использующих именно эту версию файла
хранить в папке с прогой - не думать о других. Прога точно работать будет как надо.
Исходя из этого можно сделать кучу выводов как например такой - создать каталог куда складывать свои библиотеки. В реестре указать путь и все проги этого автора знают где искать нужное.
Но и здесь проблем будет не меньше.
ЗЫ тонкости неучтены ибо расписывать все сами понимаете... Типа винда (XP) может использовать "длл с одинаковым именем" для отдельных прог свою версию этой длл...
← →
Loginov Dmitry © (2006-11-03 07:36) [10]RASkov (03.11.06 3:38) [9]
Неверно:
хранить в System32 - я могу написать длл, бпл с каким-нибудь стандартным названием - моя прога работает остальные курят.
Курить [5]
← →
evvcom © (2006-11-03 09:08) [11]> [9] RASkov (03.11.06 03:38)
> Неверно:
> хранить в System32 - я могу написать длл, бпл с каким-нибудь
> стандартным названием - моя прога работает остальные курят.
За это либо стрелять, либо просто в помойку такую прогу. Без ИМХО.
← →
Сергей М. © (2006-11-03 09:32) [12]
> Сделал программу, кот. подгружает пакет динамически. Соответственно,
> основной проект делал с установкой build with runtime
> packages
Состояние опции BwRTP для хост-проекта в этом случае не играет никакой роли.
← →
DrPass © (2006-11-03 10:40) [13]
> Состояние опции BwRTP для хост-проекта в этом случае не
> играет никакой роли.
Еще как играет. Если программа динамически грузит BPL-пакет, она ДОЛЖНА быть собрана с установленной BwRP. Иначе программист огребет почти все те же грабли, что и при использовании DLL-плагинов.
← →
Сергей М. © (2006-11-03 10:50) [14]
> DrPass © (03.11.06 10:40) [13]
> ДОЛЖНА
> Иначе программист огребет
Интересный аргумент) ...
> DLL-плагинов
О плагинах у автора нет ни слова.
И вообще - мало ли зачем автор загружает эту bpl !
Может он тут же ее выгружает ?)
Сборка с RTP была бы нужна, если бы требовалось обеспечить общий экз-р RTL для взаимодействующих модулей. А если такое требование не выдвигается, то состояние опции BwRTP при сборке взаимодействующих проектов может быть произвольным.
← →
DrPass © (2006-11-03 11:38) [15]
> если бы требовалось обеспечить общий экз-р RTL для взаимодействующих
> модулей
Оно в любом случае требуется. Можно придумать миллионы случаев, когда приложение будет нормально работать с двумя экземплярами RTL. Точно так же можно глубоко забить на освобождение создаваемых объектов, и все равно оно будет нормально работать. Но это же не значит, что так нужно делать. Программа не должна таскать за собой мегабайты продублированного кода.
← →
Сергей М. © (2006-11-03 11:56) [16]
> Программа не должна таскать за собой мегабайты продублированного
> кода
С этим абсолютно согласен.
> Оно в любом случае требуется
Нет, не в любом. А только в тех случаях, когда оно действительно небходимо.
> Можно придумать миллионы случаев, когда приложение будет
> нормально работать с двумя экземплярами RTL
Может здесь как раз один из тех случаев ? Автор же не уточняет... Зато уточняет, что хост-модуль собран с RTP. Ну а раз так, то следовало бы уточнять состояние этой опции и для bpl-проекта, вот только тогда можно былобы о чем-то предметно говорить, в т.ч. и о небходимости общей RTL для данного случая.
← →
Суслик © (2006-11-03 12:16) [17]если аргумент "за" хранить bpl в system32 состоит в том, чтобы не терять место, то втопку такой аргумент, т.к. никакими мегабайтами тут не пахнет, а пробем с установкой и деплоем, больше - ну думаю спорить то с этим не будете?
в случае хранения в каталоге программы - взял и переписал весь каталог.
← →
Суслик © (2006-11-03 12:25) [18]Другой возможный аргумент, что при определенных услових LoadLibrary (которую в конечно имтоге вызывает LoadPackage) может иметь альтернативный алгоритм поиска библиотек. Например, первым делом искать *не* в текущем каталоге. Но согласно доке из msdn в тек. каталоге ищется в первую очередь.
Может тут есть какая-то тонкость, которую я не знаю?
← →
RASkov (2006-11-03 12:25) [19]> [11] evvcom © (03.11.06 09:08)
> За это либо стрелять, либо просто в помойку такую прогу.
> Без ИМХО.
А какую именно. Если та прога которая заменила "стандартный" файл на свой, имеет единственный вот этот косяк, а остальное на 150% отличная для тебя прога? Я думаю смысл [9] понят правильно. Т.е. можно "случайно испортить" файл так, что для "твоей" проги он 100% рабочий, но для других..... И опять же не все тонкости я описал в [9]
← →
RASkov (2006-11-03 12:27) [20]> [18] Суслик © (03.11.06 12:25)
А зачем использовать "алгоритм поиска", можно полностью путь указать к конкретной ДЛЛ, БПЛ.
← →
Loginov Dmitry © (2006-11-03 12:27) [21]> никакими мегабайтами тут не пахнет
Точно? А если посчитать?
vcl70.bpl + rtl70.bpl = 1381376 + 778240 = 2159616
тоесть минимальная необходимая комплектация пакетов весит более 2-м МБайт
← →
Суслик © (2006-11-03 12:36) [22]
> [21] Loginov Dmitry © (03.11.06 12:27)
+40мб самой программы :)
да... большая потеря 2ух мб
← →
Megabyte © (2006-11-03 12:38) [23]
> Ну а раз так, то следовало бы уточнять состояние этой опции и для bpl-проекта
Стоп. Или я дурак или одно из 2-х: опция BwRTP для созданного мною пакета не доступна(чекбокс.enabled = false ). Как я могу ее изменить?
Не думал, что тема вызовет такое бурное обсуждение. :) Было интересно послушать ваши мнения.
Я на самом деле только обучаюсь. И пользы от соданного мною пакета не так уж и много пока что. И общий объем проги со всеми пакетами больше, чем если бы сделал все в одном exe. Но в будущем планируется куча однообразных действий(запрос->отчет(Excel)->отправка на почту в конце рабочего дня), кот. будет выполнять мой класс, описанный в пакете.
Пакеты всепока храню в папке со своей прогой. Но хочется стандартные пакеты хранить в отдельной папке.
> таки добавить путь в path.
Больше хочу разораться в этом варианте, нежели писать в реестр.
Как программно задавать системные переменные и переменные среды?
← →
Reindeer Moss Eater © (2006-11-03 12:42) [24]....опция BwRTP для созданного мною пакета ....
Эта опция не для пакетов.
← →
Сергей М. © (2006-11-03 12:46) [25]
> Megabyte © (03.11.06 12:38) [23]
Э-э-э ... пардон, опция для package-проектов действительно не доступна и по дифолту установлена.
Тогда вопрос - как ты в хост-приложении намерен использовать свою bpl после ее дин.загрузки ?
← →
Reindeer Moss Eater © (2006-11-03 12:54) [26]Но хочется стандартные пакеты хранить в отдельной папке.
HKLM\Software\Microsoft\Windows\Currentversion\App path\<your_exe_name>
← →
Megabyte © (2006-11-07 09:28) [27]
> Тогда вопрос - как ты в хост-приложении намерен использовать свою bpl после ее дин.загрузки ?
Создаю экземпляр класса, описанного внутри модуля в bpl, потом
вызываю его свойства и методы.
← →
Сергей М. © (2006-11-07 09:34) [28]
> Megabyte © (07.11.06 09:28) [27]
Вот теперь понятно.
В таком случае BwRTP действительно должна быть установлена в обоих взаимодействующих модулях.
RTLXX.bpl обязана присутствовать на целевой машине - без нее не будет работать ни тот ни другой модуль. Мало того, должны присутствовать и все другие bpl, от которых зависят твои модули. Зависимости можно просмотреть с пом. TDUMP.EXE
← →
DiamondShark © (2006-11-07 13:51) [29]В результате некоторых советов у читателей может сложиться ложное представление, будто бы пакеты можно скомпилировать без установленной опции "Build with runtime packages"
← →
Megabyte © (2006-11-07 14:12) [30]
> Сергей М. © (07.11.06 09:34) [28]
> Megabyte © (07.11.06 09:28) [27]
Мало того, должны присутствовать и все другие bpl, от которых зависят твои модули. Зависимости можно просмотреть с пом. TDUMP.EXE
Да я это выяснил методом научного тыка(выяснив, какие используемые классы где описаны + стандартные модули типа RTLXX.bpl). :)
Все уже работает успешно.
Как программно задавать/изменять системные переменные и переменные среды пользователя?
← →
Суслик © (2006-11-07 22:03) [31]
> Как программно задавать/изменять системные переменные и
> переменные среды пользователя?
Уверен, что для этого нужно создать новый топик - это новый вопрос.
Страницы: 1 вся ветка
Текущий архив: 2006.11.26;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.03 c