Project

General

Profile

Deploy. Описание.

Введение

Deploy - развертываться, развертывать, применять, дислоцировать, разблокировать, базировать, приводить в действие [англ]

Система предназначена для автоматизации процесса инсталляции ПО Дигиспот и другого ПО на рабочие места комплекса.
Предполагаемыми пользователями являются сотрудники фирмы Тракт, а также инженерно-технический персонал заказчика, выполняющего инсталляцию самостоятельно.
Система предназначена для установки программ (в т.ч. ПО Дигиспот) на конечные рабочие места и частичного конфигурирования ПО Дигиспот данных рабочих мест.
Система допускает включение в комплекс мест с различной конфигурацией устанавливаемого ПО.

Идеология

Для выполнения программы установки используется PHP. Все необходимые для установки файлы, включая и интерпретатор PHP, программы установки, файлы конфигурации и пр. , хранятся в одном каталоге, называемом базовый каталог.Описание процесса установки находится в файле install.php. Содержимое данного файла может быть любым.
В данном случае файл реализует определенную программу установки, настраиваемую двумя массивами в начале файла install.php.

Запуск

Для установки ПО в стандартный каталог "C:\Program files\Digispot II" необходимо запустить файл deploy_std.bat. при этом фал должен находиться в базовом каталоге. При этом не важно, является ли базовый каталог сетевым или локальным.
Для установки в другой каталог необходимо запустить файл deploy.bat, указав в качестве параметра путь к каталогу, в который нужно произвести установку. Если параметр не указать, то в качестве каталога установки будет выбран текущий каталог.

Настройка

Все редактируемые инструкции находятся файле install.php.
В настоящий момент логика файла такова:
К моменту запуска установлены следующие переменные PHP

  1. $SRC - путь к базовому каталогу, без слеша на конце
  2. $DST - путь к каталогу установки, без слеша на конце
  3. $!DstComp - имя компьютера, на который идет установка.

В начале файла описывается множество конфигураций (массив $presets)

Для каждой конфигурации указывается множество программ, которые нужно установить в данной конфигурации.

Для каждой программы указывается путь хранения инсталлятора и параметры его запуска. Для этого используется два массива одинаковой структуры:

  • массив $keydll_soft, предназначен для "наших" программ. К этим программам будут копироваться keydll, параметры настройки и пр.
  • массив $free_soft, предназначен для стороннего ПО. Эти инсталляторы просто будут запущены с указанными параметрами

Для каждого инсталлятора указывается

  1. Путь к файлу инсталляции
  2. Параметры запуска
  3. Путь, в который программа в результате будет инсталлирована
  4. Если необходимо создавать ярлыки на рабочем столе, указывается путь к файлу или массив путей к файлам, к которым они создаются.

Если программа из $presets не указана ни в одном из массивов, то установка завершится с ошибкой.

В массиве $info описана инсталляция всего комплекса. В нем перечислены все рабочие места, для каждого из которых указано:

  1. Имя компьютера, о о котором идет речь. Один и тот же компьютер может упоминаться много раз.
  2. Имя конфигурации из массива $presets или имя программы из массивов $keydll_soft или $free_soft
  3. Название keydll, cм. ниже
  4. Имя предопределенного файла конфигурации, который будет скопирован в system\base.ini для программ, перечисленных в $keydll_soft

Параметры 3 и 4 не обязательны и могут не указываться.

Копирование keydll происходит так:

Если имя dll указано , то программа копирует файлы с именем keydll_?.dll и указанных каталогов в указанной последовательности

  1. $SRC/KEYDLL/$keyname
  2. $SRC/KEYDLL/$program/$keyname

где $program - это имя программы, а $keyname - имя keydll.
Такой способ позволяет указать или одну dll для всех программ, или указать для каждой программы свою dll. При копировании программа копирует все файлы, подходящие под маску, с любой цифрой.

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

При записи имен файлов и каталогов можно использовать и прямой и обратный слеши. Обратный слэш в строках дублируется: "$SRC//dir".

Выполнение

Если имя компьютера не упомянуто в $info, то программа не установит ничего, создаст каталог с логами в указанной папке, и завершит выполнение.

В противном случае:

  1. устанавливается однократный набор патчей и драйверов, явно указанных в коде install.php
    1. Обновление Windows installer 3.1
    2. NET framework 3.5
    3. Microsoft Visual C 2008 SP1 Redistributable Package
    4. HASP HL Drivers
    5. Hardlock drivers
  2. для каждой записи в info
    1. устанавливается набор программы, в том же порядке, в каком они указаны в конфигурации.
    2. для каждой программы из $keydll_soft программа попытается скопировать keydll и base.info
    3. для каждой программы копируется множество дополнительных файлов, в указанных в config.auto

Записи обо всех операциях вносятся в файл $DST/Log/<имя_компа>дата><время>.log, который потом копируется в $SRC/Logs

При успешном завершении на экране и в логе будет присутствовать строка

**** Installation finished *****


В случае ошибки при копировании, запуске или удалении файла установка прерывается, и завершается с сообщением

The process was interrupted due to the error 

Специальные функции (DeployAPI)

Для упрощения описания процесса установки и обеспечения возможности отката предусмотрен набор специальных функций.

Run

Run( $file_to_run, $arguments=array() )


Запускает указанный файл на выполнение, передавая множество параметров в виде ассоциативного массива параметр=>значение.

<code class="cpp">
Run("$SRC/tracksetup.exe", array("/silent", "/DIR" => "$DST//SpecialTrack" ); // Запуск инсталлятора трека с параметрами

CopyTo

Syntax

CopyTo( $src, $dst="", $flags = "F")


Копировать файл на !DstComp.

src может быть:

* файлом. В этом случае dst

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

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

* Каталогом. В этой ситуации dst интерпретируется как каталог, внутрь которого копируется данный каталог со всеми подкаталогами.

* Маской файлов. В этой ситуации dst интерпретируется как каталог, внутрь которого копируются все файлы по данной маске. Что попадает под маску - определяет параметр flags

* * F - только файлы

* D - только каталоги

* DF или FD и то и другое.

Если dst не указано, то файл копируется в $DST, который всегда воспринимается как каталог.

Функция перезаписывает уже существующие файлы, даже с атрибутом read_only.

<code class="cpp">
Copy( "$SRC/keydlls/$key/keydll_5.dll", "$DST/Track/"); // копирует файл из каталога, определяемого переменной $key в подкаталог Track каталога установки

Del

Syntax

Del( $src, $flags = "F" );


Удаляет файлы и каталоги со всем содержимым. $flags определяет, что обрабатывает функция:

  • F - только файлы
  • D - только каталоги
  • DF или FD и то и другое.

Стирает каталоги со всем содержимым и файлы, в т.ч. с атрибутом read_only.

Сall

Syntax

Сall( $php_file_name, $dstpath="" )


Запустить на выполнение указанный файл инструкций. По умолчанию наследует все переменные объявленные к моменту вызова, включая $DST. Но $DST можно изменить, указав его явно.

Replacetext

syntax

Replacetext( $file, $perplaces );


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

<code class="cpp">
Copy("$SRC\axia.cdu");
Replacetext( "$DST\axia.cdu", array( "%node_address%" => $node_address );


Пример заменит в файле axia.cdu строку node_adress на значение переменной $node_address.
Будут заменены все вхождения указанного шаблона.
Работает только с файлами на стороне dstcomp.

Структура файлов

Все файлы, находящиеся в корневом каталоге, необходимы для выполнения программы установки и не должны меняться.
Менять можно только install.php

Папка auto.conf

Содержит одну папку _copy. В этой папке можно разместить файлы и каталоги, автоматически копируемые в каталоги установки программ. Данная папка содержит папки с названиями конфигураций и папку с именем _any - для любой конфигурации. Внутри каждой из папок находятся папки с именем программ и папка с именем _any - для любой программы.

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

  • $SRC/auto.conf/_copy/_any/_any/
  • $SRC/auto.conf/_copy/air/_any/
  • $SRC/auto.conf/_copy/_any/djin/
  • $SRC/auto.conf/_copy/air/djin/

Папка config

Содержит файлы <имя рута>.ini (как в $info), которые будут скопированы в system/base.ini

Папка keydll

Содержит файлы keydll_?.dll

Файлы находятся в каталогах с именами, указанными в $info. Возможно, в подкаталогах с именами программ.

Например:

* keydll

* 234-2 (имя ключа, как в $info)

* keydll_5.dll (для всех программ)

* track

* keydll_5.dll (только для трека)

Папка Logs

Логи установки со всех рабочих мест. Папка должна быть доступна на запись.

Папка setup

Содержит устанавливаемые программы.

Add picture from clipboard (Maximum size: 742 MB)