Project

General

Profile

ТЗ автоматического построение пакета дистрибутивов 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. Действия пользователя

  1. Пользователь выбирает поколение, в котором требуется построить дистрибутивы
  2. Из SourceSafe@а беертся последняя версия
  3. Поднимается версия в файле \distributives\version.h
  4. Исходя из требуемого типа пакета и правообладаетя методом комментирования лишнего в файле maker.bat выбирается нужный правобладатель
  5. Исходя из требуемого типа релиза и типа пакета дистрибутивов определяется список защищаемых компонент
  6. Исходя из требуемого типа релиза и типа пакета дистрибутивов определяется список дистрибутивов, которые должны быть построены
  7. Производиться запуск скрипта на построение дистрибутивов: \distributives\maker.bat - с выводом результат в консоль; \distributives\make.bat - с выводом результата в каталог Logs\. При этом скрипту передается два параметра: и . Первый список содержит перечень ASProtect-проектов, по которым производится кодирование с целью защиты от взлома (п.5). Второй параметр содержит список проектов InnoSetup (скриптов на построение дистрибутива, п.6).

Результат процедуры построения после завершения обнаруживается в папке, соответствующей данному правообладателю (прописывается в скрипт дистрибутива InnoSetup). Обычно это каталоги Release\Output*\

Алгоритм работы скриптов построение дистрибутивов

  1. На первом шаге производиться выполнение скрипта copysource.bat, задача которого подготовить исходный метриал - автоматически скопировать и извлечь из архива релизы в соответствующие каталоге на рабочем месте, где производиться построение. Этот папки \Release\DigispotII, \Release\DigispotII Demo, DJin Lite.
  2. На втором шаге исходя из выбранного правообладателя производиться "применении правообладателя" к релизу (с помощью вызова Set_App_Info.exe) и дистрибутивам (с помощью подстановки файла scripts\owner.inc) - заноситься информация, которая в последствии отображается в окне About, на первой странице дистрибутива и т.п.
  3. Производится кодирование исполняемых файлов с помощью ASProtect@а по заданному пользователем списку с помощью скрипта protectone.bat
  4. Производится построение дистрибутивов по заданному пользователю списку
  5. Производится копирование результата в места назначения - скрипт copyres.bat

Скрипты дистрибутивов имеют так же довольно сложную структуру - существует ряд .inc и .h - файлов, используемых в большинстве скриптов. Активно используется препроцессор. С этим надо быть осторожнее.

Алгоритм действий пользователя в разрабатываемом приложении

Основная задача разработки существенно уменьшить влияние человеческого фактора на процесс построения дистрибутивов. Шаги 2 и 3 автоматизировать полностью, шаги 4, 5 и 6 связать воедино и реализовать в виде оконного интерфейса, с возможностью ручного выбора и автоматическим контролем, не давая пользователю выбрать заведомо неработоспособную комбинацию параметров. Последовательность действия могла бы быть такой:

  1. Пользователь выбирает поколение, в котором требуется построить дистрибутивы
  2. Пользователь запускает специальный скрипт/приложение, которое имеет оконный интерфейс (достаточно одного окна со списком комбо-боксов и чек-боксов).
  3. Приложение автоматически собирает информацию о доступных релизах в рамках выбранного прилжения с указанием версий релизов.
  4. Приложение автоматически проверяет релиз на полноту и целостность.
  5. Пользователь выбирает правобладателя, для которого будет предназначен пакет дистрибутивов. При этом программа автоматически ограничивает список типов пакетов, и список типов релизов. Если тип релиза не выбран - строятся все релизы.
  6. Пользователь выбирает тип релиза, для по которому будет строиться пакет дистрибутивов. Список дистрибутивов снова ограничивается.
  7. Пользователь выбирает дистрибутивы, которые необходимо построить. Если ни один дитсрибутив не выбран - строятся все.
  8. Пользователь выбирает, куда следует скопировать результат: на сервер общего хранения, на сайт, etc - список путей LAN или ftp-серверов.
  9. Пользователь запускает построение.
  10. Приложение производит защиту релиза, построение дистрибутивов и копирование результатов в указанные места назначения
  11. Приложение выводит результат построение на экран

Параметры построение дистрибутивов

Поддерживаемые на данный момент релизы (поколения)

  1. 2.15
  2. 2.14
  3. 2.13
  4. 2.12

Правообладатели:

  1. Тракт-Софт
  2. RBartKG
  3. Eela Audio

Типы релизов:

  1. Unprotected
  2. KeyDll
  3. Demo
  4. Lite

Типы пакетов:

  1. Полная версия
  2. Коробочная версия
  3. Существуют дистрибутивы, не входящие в пакеты.

Перечень дистрибутивов:

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

Далее должно идти описание взаимосвязей…

Add picture from clipboard (Maximum size: 742 MB)