Сторонние зависимости в эксперте Delphi - PullRequest
3 голосов
/ 19 мая 2011

Я пишу эксперт Delphi Ide, с некоторыми сторонними зависимостями (визуальные элементы управления), мой вопрос: когда этот эксперт будет установлен на целевой машине, этот компьютер должен будет также установить эти сторонние компоненты?или компоненты встроены внутри сгенерированного bpl?

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

Они будут зависеть от любых пакетов, которые вы помещаете в пункт «Требует» вашего пакета.Затем любые пакеты, которые им требуются, и так далее ...

Они могут быть встроены, если вы поместите единицы, от которых вы зависите, в свой пакет.

Пример:

package Package1;

...

// Items in the section mean that your package
// will depend on the BPL of the other package
// Target machine must have the BPL's listed here.
requires
  rtl;  


// Unit's here mean that the code is in your
// package and not in another BPL
contains
  Unit8 in 'Unit8.pas';

end.

Слово предостережения

  • Загружены два пакета, содержащие блоки с одинаковым именем.
  • Лицензирование сторонних компонентов, поскольку коммерческие библиотеки обычно не могут быть переупакованыв качестве библиотеки.
  • Разработчики могут также захотеть использовать другую версию стороннего компонента.Вам нужно будет предоставить исходный код этим разработчикам, чтобы они могли связать вашего эксперта.

Один способ избежать проблем

  • Переименование сторонних юнитов, которыеиспользуются.
  • Включите переименованные единицы в ваш пакет.

Я видел, как этот метод делался много раз.

Например, Castalia делает это, и рекомендует этот метод при использовании его с открытым исходным кодом Delphi Lexer и анализатор.

3 голосов
/ 19 мая 2011

Об экспертах BPL:

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

К сожалению, я не могу сказать, что вы можете безопасно отправить их, потому что вы имеете дело с другими разработчиками Delphi: они могут иметь те же сторонние пакеты, но в другой версии!С помощью обычного приложения вы можете просто установить свою версию BPL в каталог своего приложения, но это не сработает для Delphi IDE, потому что приложение является IDE: IDE - это то, что загружает и связывает BPL, и можетне загружать две версии одного и того же BPL.И вы не можете заменить версию своего пользователя, потому что им нужно сохранить версию, которую они лицензировали, даже если ваша версия новее!

Решение: эксперты DLL:

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

3 голосов
/ 19 мая 2011

Как говорил Роберт Лав: зависимости существуют,

Любой проект delphi может быть настроен на компиляцию с или без пакетов. Проект | Варианты | Пакеты | установите или снимите флажок «Сборка с помощью пакетов времени выполнения».

Когда вы собираете / компилируете с пакетами , это означает, что вы не встраиваете код из пакетов и вам придется распространять bpl, от которых зависит ваш эксперт. Как Роберт также говорил: пожалуйста, обратите внимание на лицензии в отношении перераспределения, когда вы выбираете эту опцию.

Когда вы собираете / компилируете без пакетов, код сторонних элементов управления / библиотек внедряется в ваш исполняемый файл / dll, и это все, что вам нужно распространять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...