Как вы определяете из BPL, если это только время проектирования - PullRequest
9 голосов
/ 05 мая 2011

Мы собираем все наши пакеты в один и тот же выходной каталог.

Каталог включает как пакеты времени разработки, так и пакеты времени выполнения.

Глядя на полученные BPL, можно ли определить, что пакеты предназначены только для времени разработки?

Я хочу иметь возможность отфильтровывать их из моего списка развертывания, так как я строю с помощью пакетов времени выполнения.

В прошлом я создавал собственные списки пакетов времени выполнения. Я ищу прочь, чтобы автоматизировать этот процесс.

Мы используем Delphi XE, если есть ответ для конкретной версии.

Ответы [ 2 ]

15 голосов
/ 05 мая 2011

Используйте GetPackageInfo и проверьте значение pfDesignOnly в параметре Flags.Или, если вы хотите пропустить ненужное перечисление содержащихся модулей и требуемых пакетов, взгляните на PackageInfoTable в SysUtils (который, к сожалению, скрыт в разделе реализации).

2 голосов
/ 05 мая 2011

AFAIK, не внешне без анализа imports BPL, чтобы увидеть, есть ли у него какие-либо зависимости от пакетов IDE только для разработки (например, DesignIntf). Вы можете сделать это с TDump или DependencyWalker . Вы также можете воспользоваться предложением TOndrej, если хотите попробовать загрузить пакеты с приложением.

Быстрая проверка одного из пакетов только для дизайна в моей системе с DependencyWalker показывает это:

DependencyWalker image

Обычное решение этой проблемы (как вы можете видеть в пакете Virtual Treeview на рисунке) заключается в добавлении суффикса D к пакетам времени разработки; некоторые наборы компонентов (например, некоторые из TurboPower, IIRC) также используют суффикс R для пакетов времени выполнения.

...