Deploy. Описание.¶
- Table of contents
- Deploy. Описание.
Введение¶
Deploy - развертываться, развертывать, применять, дислоцировать, разблокировать, базировать, приводить в действие [англ]
Система предназначена для автоматизации процесса инсталляции ПО Дигиспот и другого ПО на рабочие места комплекса.
Предполагаемыми пользователями являются сотрудники фирмы Тракт, а также инженерно-технический персонал заказчика, выполняющего инсталляцию самостоятельно.
Система предназначена для установки программ (в т.ч. ПО Дигиспот) на конечные рабочие места и частичного конфигурирования ПО Дигиспот данных рабочих мест.
Система допускает включение в комплекс мест с различной конфигурацией устанавливаемого ПО.
Идеология¶
Для выполнения программы установки используется PHP. Все необходимые для установки файлы, включая и интерпретатор PHP, программы установки, файлы конфигурации и пр. , хранятся в одном каталоге, называемом базовый каталог.Описание процесса установки находится в файле install.php. Содержимое данного файла может быть любым.
В данном случае файл реализует определенную программу установки, настраиваемую двумя массивами в начале файла install.php.
Запуск¶
Для установки ПО в стандартный каталог "C:\Program files\Digispot II" необходимо запустить файл deploy_std.bat. при этом фал должен находиться в базовом каталоге. При этом не важно, является ли базовый каталог сетевым или локальным.
Для установки в другой каталог необходимо запустить файл deploy.bat, указав в качестве параметра путь к каталогу, в который нужно произвести установку. Если параметр не указать, то в качестве каталога установки будет выбран текущий каталог.
Настройка¶
Все редактируемые инструкции находятся файле install.php.
В настоящий момент логика файла такова:
К моменту запуска установлены следующие переменные PHP
- $SRC - путь к базовому каталогу, без слеша на конце
- $DST - путь к каталогу установки, без слеша на конце
- $!DstComp - имя компьютера, на который идет установка.
В начале файла описывается множество конфигураций (массив $presets)
Для каждой конфигурации указывается множество программ, которые нужно установить в данной конфигурации.
Для каждой программы указывается путь хранения инсталлятора и параметры его запуска. Для этого используется два массива одинаковой структуры:
- массив $keydll_soft, предназначен для "наших" программ. К этим программам будут копироваться keydll, параметры настройки и пр.
- массив $free_soft, предназначен для стороннего ПО. Эти инсталляторы просто будут запущены с указанными параметрами
Для каждого инсталлятора указывается
- Путь к файлу инсталляции
- Параметры запуска
- Путь, в который программа в результате будет инсталлирована
- Если необходимо создавать ярлыки на рабочем столе, указывается путь к файлу или массив путей к файлам, к которым они создаются.
Если программа из $presets не указана ни в одном из массивов, то установка завершится с ошибкой.
В массиве $info описана инсталляция всего комплекса. В нем перечислены все рабочие места, для каждого из которых указано:
- Имя компьютера, о о котором идет речь. Один и тот же компьютер может упоминаться много раз.
- Имя конфигурации из массива $presets или имя программы из массивов $keydll_soft или $free_soft
- Название keydll, cм. ниже
- Имя предопределенного файла конфигурации, который будет скопирован в system\base.ini для программ, перечисленных в $keydll_soft
Параметры 3 и 4 не обязательны и могут не указываться.
Копирование keydll происходит так:
Если имя dll указано , то программа копирует файлы с именем keydll_?.dll и указанных каталогов в указанной последовательности
- $SRC/KEYDLL/$keyname
- $SRC/KEYDLL/$program/$keyname
где $program - это имя программы, а $keyname - имя keydll.
Такой способ позволяет указать или одну dll для всех программ, или указать для каждой программы свою dll. При копировании программа копирует все файлы, подходящие под маску, с любой цифрой.
Для копирования файлов и каталогов есть свой набор функций, доступных программе.
При записи имен файлов и каталогов можно использовать и прямой и обратный слеши. Обратный слэш в строках дублируется: "$SRC//dir".
Выполнение¶
Если имя компьютера не упомянуто в $info, то программа не установит ничего, создаст каталог с логами в указанной папке, и завершит выполнение.
В противном случае:
- устанавливается однократный набор патчей и драйверов, явно указанных в коде install.php
- Обновление Windows installer 3.1
- NET framework 3.5
- Microsoft Visual C 2008 SP1 Redistributable Package
- HASP HL Drivers
- Hardlock drivers
- для каждой записи в info
- устанавливается набор программы, в том же порядке, в каком они указаны в конфигурации.
- для каждой программы из $keydll_soft программа попытается скопировать keydll и base.info
- для каждой программы копируется множество дополнительных файлов, в указанных в 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¶
Содержит устанавливаемые программы.