Страницы

воскресенье, 28 сентября 2008 г.

Обзор средств для автоматической компиляции и установки библиотек в Delphi

На работе у меня установлена 6я версия Delphi, и для перекомпиляции всех библиотек и проектов использую первую версию want. Дома же у меня стоит BDS 2007, и при попытке воспользоваться want-ом, выяснилось, что эту версию Delphi want просто не видит.

Я подумал: ага! появился повод взглянуть на продвигаемый Codegear-ом MsBuild. Но, немного поизучав документацию и справку в Дельфи на эту тему, решил, что с MsBuild-ом для меня всё не так просто. Точнее, всё довольно просто когда в комплекте с .dpk файлами поставляются и .dproj файлы, но во многих библиотеках их просто нет. Единственный способ создать .dproj файл - это открыть .dpk-файл в IDE. Но подобное вмешательство в файлы чужих библиотек меня не устраивало.

Следующим инструментом был Silverpoint MultiInstaller. MultiInstaller умеет распаковывать исходники из .zip файла, компилировать и регистрировать в Delphi. Настраивается через ini файл, в котором должны быть прописаны названия zip-файлов с исходниками, можно также задать пути для поиска нужных файлов. Для каждой версии Дельфи можно задать свои пути. К сожалению MultiInstaller не умеет просто перекомпилировать исходники в указанных папках.

Delphi Package Tool - компилирует и устанавливает в Дельфи package-ы. В качестве списка для компиляции .bpg-файл(Borland Package Group). Имеет инструменты для создания .bpg-файлов.  Поддерживает версии от D5 до 2006. Мне эта программа страшно не понравилась тем, что при попытке выбрать версию Дельфи начала сыпать exception-ами. Так что я её толком даже не тестировал.

Delphi Package Installer(0.33)-у достаточно только указать начальный каталог и маску для поиска файлов. Он сам найдёт все package-ы по маске, сам отсортирует их по зависимостям и позволит выбрать что компилировать из найденного. От пользователя потребуется только отметить галочками необходимые, после чего Delphi Package Installer скомпилирует их и зарегистрирует в IDE. Помимо установки package-й он умеет устанавливать и .hlp файлы, интегрируя их в IDE. Автор, Ibrahim Dursun, развивает этот проект. И в будущем планирует ввести возможность сохранять найденные файлы. 

Быстрый установщик компонент в Delphi

Суть:

want 0.33

Использую на работе для перекомпиляции обширной библиотеки сторонних и внутренних библиотек компонент и проектов.
  • Работа из командной строки: да
  • Возможность работы через GUI: нет
  • Настройка: через want.xml
  • Прослеживание зависимостей: вручную через want.xml
  • Возможность задавать условные директивы компиляции(conditional defines): вручную в want.xml
  • Открытый исходный код: да 

Плюсы:

  • Помимо перекомпиляции выполнять многие другие действия: умеет паковать в zip, работать с файлами и папками, имеет продуманную систему настройки и позволяет писать достаточно сложные скрипты.

Минусы

  • проект давно не поддерживается, автор сейчас занимается проектированием следующей версии want2
  • не видит BDS 2007
  • не умеет регистрировать package-ы в IDE
  • нетривиален в настройке
  • документации настолько мало, что в поисках поддерживаемых функций приходится смотреть исходный код.
MsBuild

Инструмент от Microsoft-a, с которым я толком не разбирался. Мне он показался слишком сложным.
  • Работа из командной строки: да
  • Возможность работы через GUI: нет
  • Настройка: через .xml (.dproj)
  • Прослеживание зависимостей: вручную через .xml
  • Возможность задавать условные директивы компиляции(conditional defines): вручную
  • Открытый исходный код: нет

Плюсы:

  • автор - Microsoft
  • обширная документация
  • мощнейший инструмент, с помощью которого наверняка можно сделать всё что угодно, если разобраться.

Минусы

  • нетривиален в настройке(если нет .dproj), не имеет GUI и Wizardoв

 Silverpoint MultiInstaller

Простой в использовании инструмент, наилучшим образом подходящий для начальной установки нескольких связанных package-й.

  • Работа из командной строки: нет
  • Возможность работы через GUI: да
  • Настройка: через setup.ini
  • Прослеживание зависимостей: вручную через setup.ini
  • Возможность задавать условные директивы компиляции(conditional defines): нельзя(только в исходниках)
  • Открытый исходный код: да

Плюсы:

  • для инсталляции используется проверенный временем движок от MustangPeak
  • очень прост в настройке
  • умеет устанавливать компоненты прямо из .zip-архивов

Минусы

  • умеет устанавливать компоненты только из .zip-архивов, т.е. просто папку с исходниками указать нельзя.

Delphi Package Tool

плюсы: неизвестны
минусы:
  1. Глючит с BDS 2007
  2. Исходные коды закрыты
Delphi Package Installer(0.33)
  • Работа из командной строки: нет
  • Возможность работы через GUI: да
  • Настройка: только через GUI-Wizard-ы
  • Прослеживание зависимостей: автоматически
  • Возможность задавать условные директивы компиляции(conditional defines): нельзя(только в исходниках)
  • Открытый исходный код: да

Плюсы:

  • для инсталляции используется механизмы JCL
  • крайне прост в эксплуатации
  • проект развивается.

Минусы

  • Не умеет разложить Bpl-ки в одну папку, Dcu в другую, Dcp в третью
  • При каждой перекомпиляции его приходится настраивать заново.

Резюме

Идеальной build-машины, полностью воплощающей мою мечту я пока не нашёл. Буду писать сам. Но из рассмотренного хочу особо выделить Delphi Package Installer, как лучший инструмент для быстрой установки большого количества компонент.

Для Delphi 2006-2009 на роль билд-машины может подойти MsBuild, а для старых версий Delphi(до 7-й включительно) – want. Правда придётся повозится с изучением xml-синтаксиса.

Для распространения своих компонент, идеальным инструментом будет Silverpoint MultiInstaller.

[1] – в этом посте речь идёт о первой версии want. 0.33

5 комментариев:

  1. Очень жду статью о том как пользоваться Want

    ОтветитьУдалить
  2. Delphi Package Installer
    Посмотрел - идея отличная
    Но к сожалению пока не дороботаная прога

    ОтветитьУдалить
  3. Увидел тут на баше:

    Из руководства по MSbuild:
    Как известно, Microsoft обожает создавать такие же продукты, как у других, но другие.

    ОтветитьУдалить
  4. Есть еще скрипт для автоматической компиляции и установки компонента для Inno Setup

    ОтветитьУдалить
  5. script для Inno Setup вроде использует Mustangpeak-овскую dll-ку. Ту же самую, что используется в Multiinstaller-e

    ОтветитьУдалить