Я подумал: ага! появился повод взглянуть на продвигаемый 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, развивает этот проект. И в будущем планирует ввести возможность сохранять найденные файлы.
Суть:
want 0.33
Использую на работе для перекомпиляции обширной библиотеки сторонних и внутренних библиотек компонент и проектов.
- Работа из командной строки: да
- Возможность работы через GUI: нет
- Настройка: через want.xml
- Прослеживание зависимостей: вручную через want.xml
- Возможность задавать условные директивы компиляции(conditional defines): вручную в want.xml
- Открытый исходный код: да
Плюсы:
- Помимо перекомпиляции выполнять многие другие действия: умеет паковать в zip, работать с файлами и папками, имеет продуманную систему настройки и позволяет писать достаточно сложные скрипты.
Минусы
- проект давно не поддерживается, автор сейчас занимается проектированием следующей версии want2
- не видит BDS 2007
- не умеет регистрировать package-ы в IDE
- нетривиален в настройке
- документации настолько мало, что в поисках поддерживаемых функций приходится смотреть исходный код.
Инструмент от 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
плюсы: неизвестны
минусы:
- Глючит с BDS 2007
- Исходные коды закрыты
- Работа из командной строки: нет
- Возможность работы через 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
Очень жду статью о том как пользоваться Want
ОтветитьУдалитьDelphi Package Installer
ОтветитьУдалитьПосмотрел - идея отличная
Но к сожалению пока не дороботаная прога
Увидел тут на баше:
ОтветитьУдалитьИз руководства по MSbuild:
Как известно, Microsoft обожает создавать такие же продукты, как у других, но другие.
Есть еще скрипт для автоматической компиляции и установки компонента для Inno Setup
ОтветитьУдалитьscript для Inno Setup вроде использует Mustangpeak-овскую dll-ку. Ту же самую, что используется в Multiinstaller-e
ОтветитьУдалить