|
Вопрос # 4 511/ вопрос открыт / |
|
Здравствуйте важаемые эксперты!
Прочитал недавно на форуме ru-board такую вещь:
цитата:"EXEшник Delphi, в отличии от VSC++ EXEшника, не требует бредовых 239084 метровых Redistributive пакетов и работает AS IS. Выключите у себя в VSC++ проекте RTL и всё, привет 4мб+ EXEшник с голой MFCшной формой - браво. Включите в Delphi проекте "Build with Runtime packages" и привет 21кб EXEшник. Только придётся обзавестись Redistributable пакетами (читай, самим собрать)"
Я такое уже пробовал, (использовалась в пограмме библиотека DevExpress), но у меня этих пакетов получилась вагон и маленькая тележка в папке с программой(можно вроде и в системную директорию копировать), так вот вопрос, можно "кучу" этих пакетов объеденить в один, и если можно то как?
спасибо за ответ.
 |
Вопрос задал: Sonic-X (статус: Посетитель)
Вопрос отправлен: 18 августа 2010, 16:41
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 18 августа 2010, 19:56; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 18 августа 2010, 16:57 [#1]:
Теоретически, собрать все bpl в один файлик можно, придется сделать свой пакет и скомпилировать его. И если с сторонними библиотеками ещё как то это можно сделать, то с "системными" - накладно, как минимум лицензионное соглашение будет мешать.
С другой стороны, какой смысл в держании одной большой bpl - не знаю, да и суммарный размер больше будет.
Итого, лучше не изобретать, взять bpl как есть или обходиться без них.
Но если сильно-сильно хочется иметь один файл, то можно все bpl запаковать в архив и при старте приложения разворачивать, а по завершению - удалять. Но тут сколько подводных камней...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Sonic-X (статус: Посетитель), 18 августа 2010, 17:12 [#2]:
Вадим К. спасибо за ответ, сейчас подумав, одна большая *.bpl, действительно косяк, да и гемор это.
Тогда перефразируем немного вопрос, если не ошибаюсь Redistributable VisualStudio хxxx, копируются в папку Windows\winsxs, тогда можно ли моему приложению указать- "используй пакеты" из папки, например Windows\winsxs\myprg\. Ну не хочу я их копировать в папку приложения или в System32.
|
|
Вадим К (статус: Академик), 18 августа 2010, 18:26 [#3]:
ну их можно скопировать в каталог с программой. Будет работать.
А в windows используется хитрый метод, там загрузчик знает, где искать библиотеки.
Но если захотеть, то можно положить свои библиотеки в укромное место. для этого нужно знать, как происходит поиск библиотек
* Каталог, в котором находится исполняемый модуль текущего процесса.
* Текущий каталог.
* Системный каталог Windows.Путь к этому каталогу извлекается с помощью функции GetSystemDirectory.
* Каталог Windows.Путь к этому каталогу извлекается с помощью функции GetWindowsDirectory.
* Каталоги, указанные в переменной среды PATH.
Тут мы можем применить только последний пункт. То есть либо вручную прописать эту переменную (можно и кодом), а можно в свойствах ярлыка прописать каталог
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Sonic-X (статус: Посетитель), 18 августа 2010, 18:37 [#4]:
Вадим К. вот можно примерчик кода где прописывается переменная которая указывает что *.bpl использовать именно в папке где я укажу( например Windows\winsxs\myprg\ .
Спасибо за ответ.
|
|
Вадим К (статус: Академик), 18 августа 2010, 18:46 [#5]:
кусочек кода? вообще то это инсталлятор должен прописать. С самого приложения прописать себе путь к bpl не получиться - они подгружаются ещё до запуска приложения.
Обычно это прописывается в настройках системы (правой кнопкой мыши по "мой компьютер", там свойста и где то на вкладках есть "переменные окружения")
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Sonic-X (статус: Посетитель), 18 августа 2010, 19:56 [#6]:
Понял, спс, +1 в репу=))
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|