ТЗ автоматического построение пакета дистрибутивов Digispot II¶
- Table of contents
- ТЗ автоматического построение пакета дистрибутивов Digispot II
Исходные данные
h3. Ключевые параметры
- Поколение программного обеспечения
- Релизы версии (набор бинарных файлов - исполняемых и динамически загружаемых модулей), расположенный в виде архиве в специальном хранилище, доступном по локальной сети, в соответствии с поколением, отличаются номеров версии
- Заданный тип релиза (по применения и способу защиты - Unprotected, KeyDll, Demo, Lite)
- Заданный тип пакета дистрибутивов (по способу распространения - коробочная версия, конфигурируемая версия)
- Заданный правообладатель (дистрибьютор): Tract-Soft, RBartKG, Eela-Audio, etc.
Прочие используемые данные¶
- Перечень мест хранения дистрибутивов (результата построения)
- Перечень типов исходных релизов с указанием места хранения для каждого релиза
- Перечень номеров версий для каждого продукта
- Перечень правообладателей и информация по ним
- Перечень типов пакетов дистрибутивов, соответствие пакетов и правообладателей (каждый пакет строиться под определенных правообладателей).
- Перечень дистрибутивов по каждому пакету
- …
Применяемые инструменты¶
- Для построение дистрибутива используется InnoSetup с препроцессором.
- Для защиты приложения от взлома используется ASProtect, кодирующий ряд исполняемых файлов и динамически загружаемых библиотек (в зависимости от типа релиза)
- Для фиксирования правообладателя на уровне исполняемых файлов используется утилита SET_APP_INFO.exe
- Для извлечения релиза из архива используется консольная версия архиватора Rar
Постановка задачи¶
Необходимо разработать приложение, реализующие процедуру автоматического построение дистрибутивов по заданным пользователем параметрам, и обладающее следующими функциями и свойствами:
Необходимые функции¶
- Обеспечивать выбор типа релиза, типа пакета дистрибутивов и правообладателя пользователем с возможностью блокировки некорректного выбора (например, для правообладателя можно строить только коробочную версию).
- выбор части или отдельно взятого дистрибутива из пакета
- Обеспечивать автоматическую подготовку данных (разворачивание архива релиза нужного типа, фиксирование правообладателя, кодирование библиотек и исполняемых файлов ASProtect@ом), построение дистрибутивов и копирование результата в заданные места хранения результат
- Логгирование работы приложения
- Анализ результата выполнения промежуточных операций (копирование исходных файлов, кодирование, фиксирование правообладателя и т.д.) и адекватное поведение в дальнейшем (если один из дистриьутивов не строиться не надо пытаться его копировать, но с другой стороны - остальные нужно достроить)
- Приложение должно быть интерпретируемым, а не исполняемым
Дополнительная функциональность¶
- Автоматический подъем версии в дистрибутиве при изменении версии приложения
- Проверка доступности релиза, отображение пользователю версий доступных релизов
- Работа с SourceSafe@ом
- автоматическая проверка полноты пакета с точки зрения зависимости dll
- автоматическая проверка приложений на корректную сборку - автоматический тестовый запуск приложений (видимо до сборки дистрибутивов) со специальным ключом командной строки - приложение запускается и после успешного старта завершается с заданным кодом ошибки.
- возможность построение дистрибутива старой версии.
Алгоритм построение в текущей реализации (2.14, август 2009)
h3. Действия пользователя
- Пользователь выбирает поколение, в котором требуется построить дистрибутивы
- Из SourceSafe@а беертся последняя версия
- Поднимается версия в файле \distributives\version.h
- Исходя из требуемого типа пакета и правообладаетя методом комментирования лишнего в файле maker.bat выбирается нужный правобладатель
- Исходя из требуемого типа релиза и типа пакета дистрибутивов определяется список защищаемых компонент
- Исходя из требуемого типа релиза и типа пакета дистрибутивов определяется список дистрибутивов, которые должны быть построены
- Производиться запуск скрипта на построение дистрибутивов: \distributives\maker.bat - с выводом результат в консоль; \distributives\make.bat - с выводом результата в каталог Logs\. При этом скрипту передается два параметра: и . Первый список содержит перечень ASProtect-проектов, по которым производится кодирование с целью защиты от взлома (п.5). Второй параметр содержит список проектов InnoSetup (скриптов на построение дистрибутива, п.6).
Результат процедуры построения после завершения обнаруживается в папке, соответствующей данному правообладателю (прописывается в скрипт дистрибутива InnoSetup). Обычно это каталоги Release\Output*\
Алгоритм работы скриптов построение дистрибутивов¶
- На первом шаге производиться выполнение скрипта copysource.bat, задача которого подготовить исходный метриал - автоматически скопировать и извлечь из архива релизы в соответствующие каталоге на рабочем месте, где производиться построение. Этот папки \Release\DigispotII, \Release\DigispotII Demo, DJin Lite.
- На втором шаге исходя из выбранного правообладателя производиться "применении правообладателя" к релизу (с помощью вызова Set_App_Info.exe) и дистрибутивам (с помощью подстановки файла scripts\owner.inc) - заноситься информация, которая в последствии отображается в окне About, на первой странице дистрибутива и т.п.
- Производится кодирование исполняемых файлов с помощью ASProtect@а по заданному пользователем списку с помощью скрипта protectone.bat
- Производится построение дистрибутивов по заданному пользователю списку
- Производится копирование результата в места назначения - скрипт copyres.bat
Скрипты дистрибутивов имеют так же довольно сложную структуру - существует ряд .inc и .h - файлов, используемых в большинстве скриптов. Активно используется препроцессор. С этим надо быть осторожнее.
Алгоритм действий пользователя в разрабатываемом приложении¶
Основная задача разработки существенно уменьшить влияние человеческого фактора на процесс построения дистрибутивов. Шаги 2 и 3 автоматизировать полностью, шаги 4, 5 и 6 связать воедино и реализовать в виде оконного интерфейса, с возможностью ручного выбора и автоматическим контролем, не давая пользователю выбрать заведомо неработоспособную комбинацию параметров. Последовательность действия могла бы быть такой:
- Пользователь выбирает поколение, в котором требуется построить дистрибутивы
- Пользователь запускает специальный скрипт/приложение, которое имеет оконный интерфейс (достаточно одного окна со списком комбо-боксов и чек-боксов).
- Приложение автоматически собирает информацию о доступных релизах в рамках выбранного прилжения с указанием версий релизов.
- Приложение автоматически проверяет релиз на полноту и целостность.
- Пользователь выбирает правобладателя, для которого будет предназначен пакет дистрибутивов. При этом программа автоматически ограничивает список типов пакетов, и список типов релизов. Если тип релиза не выбран - строятся все релизы.
- Пользователь выбирает тип релиза, для по которому будет строиться пакет дистрибутивов. Список дистрибутивов снова ограничивается.
- Пользователь выбирает дистрибутивы, которые необходимо построить. Если ни один дитсрибутив не выбран - строятся все.
- Пользователь выбирает, куда следует скопировать результат: на сервер общего хранения, на сайт, etc - список путей LAN или ftp-серверов.
- Пользователь запускает построение.
- Приложение производит защиту релиза, построение дистрибутивов и копирование результатов в указанные места назначения
- Приложение выводит результат построение на экран
Параметры построение дистрибутивов¶
Поддерживаемые на данный момент релизы (поколения)
- 2.15
- 2.14
- 2.13
- 2.12
Правообладатели:
- Тракт-Софт
- RBartKG
- Eela Audio
Типы релизов:
- Unprotected
- KeyDll
- Demo
- Lite
Типы пакетов:
- Полная версия
- Коробочная версия
- Существуют дистрибутивы, не входящие в пакеты.
Перечень дистрибутивов:
BoxBCS-Editor.iss
BoxComm.iss
BoxDealer.iss
BoxLogger.iss
BoxLoggerDemo.iss
BoxMag.iss
BOXMagDemo.iss
BoxMdb.iss
BoxRetr.iss
BoxRetrDemo.iss
BoxUW.iss
BoxUWDemo.iss
Correlator.iss
dbimport.iss
DDB.iss
DDB_demo.iss
DJin.iss
DJin_demo.iss
DJinLite.iss
DJinTV_demo.iss
lib.pas
logger.iss
logger_video.iss
loggerdemo.iss
logviewer.iss
logviewer_video.iss
mag.iss
mag_demo.iss
mag2.iss
mag2_demo.iss
MediaPlanner.iss
MediaPlanner_demo.iss
News_Browser.iss
pif.iss
rds-service.iss
switcher.iss
Track.iss
Track_demo.iss
Далее должно идти описание взаимосвязей…