Данная весьма компактная программа-стартер позволяет обновлять компоненты и настройки программы из определенной папки (сетевой и локальной), а затем запустить ее. Все необходимые настройки стартера производятся в ini-файлах, один из которых основной, а остальные могут использоваться для описания некоторых индивидуальных параметров. Программа является 32-разрядной и консольной. Протестировано на MS Windows 95OSR2, 98SE, NT4 SP6, 2000 SP2, XP SP3, Vista SP1, 7; Linux Wine 1.x.
У вас сетевая программа, с которой работают одновременно несколько десятков пользователей. Как лучше установить ее и обновлять? Существует несколько решений:
Windows не позволяет изменять файлы или программы «на лету», то есть когда они используются или выполняются. Как тогда обновить выполняемый модуль или библиотеку в сети с большим количеством пользователей?
Суть нашего решения в следующем: В ярлыке вашей программы необходимо указать не саму программу, а программу-стартер с одним параметром - файлом настройки (ini-файлом). В этом файле указывается, что и откуда обновлять, какую программу запустить после всех действий. На сервере создается каталог, в котором должны находиться файлы последней версии Вашей программы и стартера. При запуске стартера он сначала обновляет сам себя и файлы настройки, а затем производит действия согласно файлу настройки. После этого запускает основную программу. Если каталог обновления не найден или произошли ошибки, то запуск программы не производится.
В итоге не нужно заставлять пользователей выходить из программы (или дожидаться конца рабочего дня), чтобы выложить новую версию какой-либо библиотеки. Достаточно выложить новый файл на сервер. При следующем запуске вашей программы этот файл будет скопирован на рабочую станцию пользователя.
Стартер является консольным приложением, написанным на Object Pascal (Turbo Delphi) c использованием API Windows, что позволило сделать его очень компактным (порядка 100К без сжатия). Консоль позволяет легко выделять фрагменты текста, запускать в ней подряд несколько консольных приложений, останавливать процесс нажатием кнопки Pause и т.д.
Стартер позволяет добавлять (вставлять), изменять (обновлять) и удалять
Папки: Можно создавать и удалять папки любого уровня вложенности.
Файлы: Файлы можно обновлять на любом диске и в любом доступном каталоге. Допускается использование масок (символов * и ?) в именах. При указании каталога можно использовать предопределенные константы (%windir%, %winsysdir% и др.). Источник обновления файлов (последние версии файлов) - один каталог, указываемый в файле настройки. Считается, что обновление необходимо, если у файла-источника и существующего локального файла не совпадают или размер, или версия, или время последнего изменения. По умолчанию проверяется размер и время изменения, но с помощью флагов можно отключить эти проверки.
Разделы и параметры реестра: Можно производить действия как с отдельными параметрами, так и с целыми разделами, если не указывать у раздела параметры.
Секции и параметры в ini-файлах: Можно производить действия только с параметрами, но не с целыми секциями.
Псевдонимы (алиасы) баз данных BDE: Требуется установленный BDE. BDE инициализируется только при необходимости.
Строки в текстовых файлах: Эта возможность сделана для вставки в некоторые системные файлы (например, services) необходимых строк. Для этого текстовый файл читается построчно и начальные символы строк проверяются с некоторой подстрокой. Если такая строка найдена, то ничего не делается. Если не найдена, то в конец файла вставляется нужная строка.
Файл настройки стартера может быть разбит на несколько, которые будут обрабатываться последовательно. В каждом можно настраивать порядок выполнения действий (например, добавлять-обновлять-удалять или добавлять-удалять-обновлять). Можно настраивать другой состав действий для отдельных компьютеров.
В случае успешной работы стартера создается пустой файл-флаг с именем основного ini-файла и расширением .ok.
Настройка производится описанием списка необходимых действий в ini-файле. В нем должна присутствовать одна обязательная секция (Options) и ряд необязательных, отвечающих за определенное действие (Insert, Update и Delete). Внутри каждой из трех последних секций описываются списки, соответственно, вставляемых, обновляемых и удаляемых файлов, параметров реестра и ini-файлов и т.д.. Если секция называется <действие>.MyComputer, то она будет выполнена только на компьютере с именем MyComputer. Смотри как пример файл psstart.ini. Строки-комментарии должны начинаться с символа «;».
Состав параметров секций Примечание: далее под символами # и ##
понимаются порядковые номера параметров. Нумерация должна начинаться с 1 и
не должна содержать пропусков номеров.
Например:
File1=...
File2=...
File3=...
Reg1Val1Name=...
Reg1Val2Name=...
Reg2Val1Name=...
Все параметры - необязательные, если специально не указано обратное.
[Constants]
В этой секции можно определить свои константы. В их значениях можно
использовать другие константы. Ответственность за зацикливание (взаимное
использование констант) лежит на вас.
В качестве источника можно использовать значения из реестра или
ini-файлов.
Формат:
реестр: <Reg>ключ;имя_параметра;значение_по_умолчанию</Reg>
ini-файл:
<Ini>имя_файла;имя_секции;имя_параметра;значение_по_умолчанию</Ini>
Примеры:
myvar = My Name compdir = %pfdir%\company progdir = %compdir%\program dbxconf = <Reg>HKCU\Software\Borland\DBExpress;Connection Registry File;%dbxdir%\dbxconnections.ini</Reg> ibVendorLib = <Ini>%cfdir%\Borland Shared\DBExpress\dbxdrivers.ini;Interbase;VendorLib;gds32.dll</Ini>
[Options]
WinHeader - заголовок окна (по умолчанию - Program Starter)
[только в основном ini-файле]
Pause - пауза перед выполнением каждого действия (для отладки),
мс (по умолчанию - без паузы) [только в основном файле]
SelfPause - пауза перед обновлением самого стартера, мс (по
умолчанию - 500) [только в основном ini-файле]
Settings - файл, из которого в самом начале загружаются константы
для использования в основном файле. Предполагается, что в этом файле
должны находиться индивидуальные настройки. [только в основном ini-файле]
SourcePath - источник файлов для обновления (по умолчанию -
рабочий каталог) [только в основном ini-файле]
Language - расширение файла локализации стартера (.rus —
русский). Файл с именем стартера и данным расширением (например, psstart.rus)
будет обновляться автоматически из SourcePath. (по умолчанию -
без локализации (English)) [только в основном ini-файле]
Run - имя программы для запуска, допускаются параметры (по
умолчанию - никакая программа не запускается) [только в основном
ini-файле]
RunFlags - флаги. Можно указывать списком с любым разделителем.
Доступные флаги:
wine — выполнять в wine. Без этого флага в wine не работает,
потому что иначе окно стартера после запуска останется открытым.
Примеры:
Run = myprog.exe Run = cmd.exe /c mybat.cmd
Include# - дополнительные файлы настройки Эти файлы выполняются раньше основного и обновляются автоматически.
SectionOrder - порядок выполнения действий, по первым буквам: Insert,
Update, Delete.
Примеры:
DIU - Delete, потом Insert и Update;
UI - только Update и Insert.
Каждый дополнительный файл настройки использует свой SectionOrder.
(по умолчанию — IUD).
[Insert] / [Update] / [Delete] Секции, непосредственно описывающие действия.
ItemOrder - порядок выполнения действия, по первым буквам: Directories,
Files, Registry keys, Ini files, BDE
aliases, Text files, OLE Servers.
Пример:
DFIR - каталоги, файлы, ini-файлы, затем реестр.
Внимание! Необходимо учитывать, что каталоги с файлами не удаляются, а
файлы не добавляются в несуществующий каталог. Раздел реестра с
подразделами также не удаляется. (по умолчанию - Insert - FDRIBTS,
Update - FDRIBS, Delete - FDRIBS).
Dir# - имя каталога, может включать предопределенные константы.
Dir#RenameTo - новое имя, в которое нужно переименовать каталог
из Dir#. [только секция Update]
File# - [путь]имя файла, может включать предопределенные
константы и символы маски в имени файла. Путь - куда запишется файл
(Insert,Update) или откуда удалится (Delete).
File#RenameTo — новое имя, в которое нужно переименовать файл из
File#. Если этот параметр указан, то файл из File# не
обновляется. Маски не поддерживаются. [только секция Update]
Пример:
[Update] ; обновление всех файлов с расширением .ini в каталоге Windows из каталога, указанного в параметре SourcePath File1 = %windir%\*.ini ; переименование файла oldfile.ext в newfile.ext File2 = %windir%\oldfile.ext File2RenameTo = %windir%\newfile.ext
File#Flags - флаги. Можно указывать списком с любым
разделителем.
Доступные флаги:
not_check_size - не сравнивать размер;
not_check_datetime - не сравнивать время изменения;
check_version - сравнивать версию (например, *.exe);
keep_newest - выбрать более новый файл;
until_reboot - если не удается обновить или удалить файл, то
сделать это при перезагрузке Windows;
9x_only - выполнять только на платформе Windows 9x;
nt_only - выполнять только на платформе Windows NT;
Пример:
File1Flags = not_check_size keep_newest 9x_only
Reg# - полное имя раздела реестра, должен начинаться с имени
корневого раздела HKEY_xxxx или HKxx.
Синонимы корневых разделов:
HKEY_CLASSES_ROOT == HKCR
HKEY_CURRENT_USER == HKCU
HKEY_LOCAL_MACHINE == HKLM
HKEY_USERS == HKUS
HKEY_PERFORMANCE_DATA == HKPD
HKEY_CURRENT_CONFIG == HKCC
HKEY_DYN_DATA == HKDD
Примеры:
Reg2 = HKEY_CURRENT_USER\Software\Polaris\Test Reg2 = HKCU\Software\Polaris\Test
Reg#Val##Name - имя параметра. Если равно %default%,
то это соответствует параметру по умолчанию для всего раздела.
Reg#Val##Value - значение параметра, может содержать конструкции
вида \NNN, которые преобразуются в символ с кодом NNN (для непечатных
символов). [кроме секции Delete]
Например, \9 означает <Tab>, \32 означает <Пробел>, \48
означает 0.
Reg#Val##Type - тип параметра. [кроме секции Delete] (I - целое
число, S - строка (по умолчанию), остальные - двоичный).
Ini# - [путь]имя ini-файла, может включать предопределенные
константы.
Ini#Val##Section- имя секции параметра.
Ini#Val##Name - имя параметра.
Ini#Val##Value - значение параметра, см. Reg#Val##Value.
[кроме секции Delete]
BDEAlias# - имя псевдонима (алиаса) базы данных BDE.
BDEAlias#Params - <имя драйвера>;<параметры в формате
BDE>. [кроме секции Delete]
Например, BDEAlias2Params = INTRBASE;SERVER NAME:test.fdb;USER NAME:
SYSDBA
Text# - [путь]имя файла, может включать предопределенные
константы. [только секция Insert]
Text#Str##Prefix - начальные символы строки, по ним происходит
поиск строки в файле.
Text#Str##Full - строка, которая вставляется в файл в случае не
нахождения строки, начинающейся с Text#Str##Prefix. См. Reg#Val##Value
Прeдопределенные константы:
%bootdir% |
загрузочный каталог |
%windir% |
каталог, где установлен Windows |
%winsysdir% |
системный подкаталог Windows (System для Win9x, System32 для WinNT,2k,XP,...) |
%etcdir% |
каталог, где находятся файлы services, hosts и пр. |
%tempdir% |
каталог для временных файлов |
%pfdir% |
каталог %bootdir%:\Program Files |
%cfdir% |
каталог %bootdir%:\Program Files\Common Files |
%mediadir% |
каталог %windir%\Media |
%srcdir% |
каталог-источник файлов |
В этот список добавляются все константы из секции Constants основного и дополнительных файлов настройки.
Также можно использовать любые переменные окружения. Например, %TEMP%.
Запуск: [путь]psstart.exe <ini-файл>
Файлы psstart.exe и основной файл настройки <ini-файл> должны находиться в одном каталоге (путь).
В случае ошибки возвращаются следующие коды завершения: 0 - успешное завершение; 1 - неверные параметры запуска; 2 - ошибка при выполнении.
Данная программа поставляется с исходными текстами и распространяется под лицензией GNU General Public License (GPL) версии 3 или выше. Полный ее текст смотрите в файлах gpl.txt и gplrus.txt.
Условные обозначения:
+ - добавлено | # - изменено | - - удалено | * - исправлено |
[N.M.L] | - версия, в которой появилась ошибка | ||
[XXXXMMMM #NNNN] | - идентификатор задачи, NNNN - ID, XXXXMMMM - код |
08.12.14 1.5.0.4
05.12.13 1.5.0.3
27.08.08 1.4.0.2
15.08.08 1.3.0.1
14.08.08 1.2.1.8
08.08.08 1.2.1.7
30.07.08 1.2.1.5
20.03.08 1.2.1.4
17.03.08 1.2.1.2
16.03.08 1.2.1.1
12.03.08 1.2.0.4
03.03.08 1.2.0.3
13.11.07 1.1.1.4
07.03.07 1.1.1.3
05.09.06 1.1.1.1
12.11.04 1.1.0.3
29.01.02 1.0.0.12
25.01.02 1.0.0.10
05.11.01 1.0.0.8
С уважением,
ПолюсСофт ИнформТехнологии (PSTG)
http://www.polesoft.ru
Email: support@polesoft.ru