Каков наилучший способ организовать несколько пакетов библиотеки Delphi для проекта? - PullRequest
2 голосов
/ 02 марта 2011

Я ищу элегантное решение, как подготовить IDE и сценарий сборки проекта Delphi 2010. На данный момент я могу создать пользовательский раздел реестра для этого проекта с необходимыми Известными пакетами, добавленными в реестр перед запуском IDE, однако для большинства пакетов времени разработки требуются пакеты времени выполнения и возникают ошибки при загрузке IDE (или при выборе пакетов в Install Пакеты оконные).

Перемещение всех исполняемых пакетов в $ (BDSCOMMONDIR) \ Bpl работает, и это единственное место, которое Delphi, похоже, ищет при поиске зависимостей пакетов. Можно ли заставить Delphi искать зависимости пакетов в произвольном множестве мест? В приведенном ниже примере эти местоположения: $ (проекты) \ Delphi2010 \ CommonControls \ bpl \ и $ (внешние компоненты) \ Delphi2010 \ DevExpress \ Library \ Delphi14.

Файл реестра, который я использую:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\CodeGear\ProductName\7.0\Disabled Packages]
[-HKEY_CURRENT_USER\Software\CodeGear\ProductName\7.0\Known Packages]

[HKEY_CURRENT_USER\Software\CodeGear\ProductName\7.0\Known Packages]
"$(Projects)\\Delphi2010\\CommonControls\\bpl\\CommonControls.bpl"="Common Controls"
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxCoreD14.bpl"="ExpressCoreLibrary by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dclcxLibraryD14.bpl"="Express Cross Platform Library by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxDockingD14.bpl"="ExpressDocking Library by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dclcxSpreadSheetD14.bpl"="ExpressSpreadSheet by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxSBD14.bpl"="ExpressSideBar by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarD14.bpl"="ExpressBars by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarDBNavD14.bpl"="ExpressBars DBNavigator by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarExtDBItemsD14.bpl"="ExpressBars extended DB items by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarExtItemsD14.bpl"="ExpressBars extended items by Developer Express Inc."
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxRibbonD14.bpl"="ExpressBars Ribbon controls by Developer Express Inc."

И командный файл для запуска IDE:

regedit.exe /S ProductName.reg
start "delphi" "%DELPHI2010%\bin\bds.exe" -rProductName

1 Ответ

4 голосов
/ 02 марта 2011

Все, что требуется Delphi, заключается в том, чтобы пакеты времени выполнения находились где-то в системном пути.

Если Delphi, похоже, ищет только в папке BDSCOMMONDIR, потому что это единственная папка с вашими и вашими сторонними bpl, которыетакже находится в системном пути.

Поэтому все, что вам нужно сделать, это добавить значения как $(Projects)\Delphi2010\CommonControls\bpl\, так и $(ExternalComponents)\Delphi2010\DevExpress\Library\Delphi14 в системный путь.

Однако системный путьограничен в длине.Если у вас достаточно библиотек компонентов, такой подход скоро сожрет все это.Так что вам действительно нужно рассмотреть возможность размещения всех ваших библиотек времени выполнения в одном каталоге.Или используйте два: (один для ваших собственных библиотек времени выполнения и один для сторонних библиотек времени выполнения.

И это не обязательно должна быть папка по умолчанию, используемая для переменной среды BDSCOMMONDIR. Вы можете переопределитьпапка, на которую указывает переменная среды BDSCOMMONDIR. Просто добавьте переопределение, используя Сервис | Параметры среды | Переменные среды.

После добавления переопределения укажите папку, в которую вы хотите поместить все сторонние библиотеки (среды выполнения)чтобы пойти, перекомпилировать их. Если компоненты хорошо себя ведут, они должны использовать настройки по умолчанию для своего местоположения вывода, а это означает, что их bpl должны в конечном итоге в новом месте.

...