Файл cfgconfig.xml используется для выполнения набора команд до или после запуска инсталлятора при обновлении с помощью cfg.exe.
Структура файла должна начинаться с раздела <Start>, все остальные разделы должны быть размещены внутри <Start>.
Примечание. Любой из разделов, кроме <Start>, может быть подразделом <Before> или <After>, которые определяют, когда должен выполниться набор команд: до запуска инсталлятора или после.

Определение
времени ожидания завершения обновления (<Start>)
Элемент <Start> является контейнером для всех команд: все остальные разделы размещаются внутри этого элемента.
| Атрибут | Описание |
| Timeout | Определяет время, в течение которого ожидается завершение
обновления Prognoz Platform 8.
Если к моменту истечения времени обновление еще не завершилось
(например, процесс не отвечает), то оно будет остановлено
принудительно, после чего будет произведен запуск Prognoz Platform 8.
Значение задается в секундах. По умолчанию значение равно 20 минутам. Для неограниченного ожидания задайте атрибуту значение «-1». |
<Start Timeout="7200">
<Cfg Copy="1"/>
</Start>
В течение 2 часов будет ожидаться завершение обновления.

Поддержка
работы пользовательских ярлыков, настроенных на cfg.exe (<Cfg>)
Для работы пользовательских ярлыков, настроенных на cfg.exe, необходимо скопировать новый cfg.exe в папку текущего релиза.
Для этого создайте раздел <Cfg> в cfgconfig.xml.
| Атрибут | Описание |
| Copy | Определяет признак копирования файла:
1 - копировать; 0 - не копировать. |
<Start>
<Cfg Copy="1"/>
</Start>
После установки новой версии создается папка предыдущего релиза, куда помещается новый файл cfg.exe.

Определение
действий, выполняемых с файлом (<File>)
Для определения действий, выполняемых с файлом, создайте раздел <File> в cfgconfig.xml
| Атрибут | Описание |
| Path | Определяет имя файла. |
| Args | Определяет аргументы командной строки.
Примечание. Возможно использование подстановки INSTALLDIR, которая возвращает путь установки Prognoz Platform 8. |
| Copy | Определяет признак копирования файла:
1 - копировать; 0 - не копировать. |
| NoExec | Запрещает выполнение файла:
1 - не выполнять файл; 0 - выполнять. |
| NoDb | Запрещает внесение в БД:
1 - не заносить в БД; 0 - заносить в БД. |
| NoTemp | Определяет признак копирования файла обновления во временную
папку:
1 - не копировать; 0 - копировать. При обновлении во временную папку будут копироваться необходимый пакет msi, файлы, которые явно прописаны в cfgconfig.xml в атрибуте Path раздела <File>, а также, если необходимо, файлы cfg.exe и lservrc.Примечание. Для корректного выполнения команд из cfgconfig.xml все используемые при их выполнении файлы должны быть указаны в cfgconfig.xml. Файлы с атрибутом NoDb="1" не будут скопированы, если не установлен атрибут NoTemp="0". |
<Start>
<Before>
<File Path="cmd.exe" Args="/C">
<Return>
<Code Value="0" Message="Success" Break="N" />
<Code Value="-1" Message="Fail" Break="Y" />
</Return>
</File>
</Before>
<After>
<File Path="cmd.exe" Args="/C" />
</After>
</Start>
До обновления производится запуск командной строки с заданным параметром, в зависимости от кода возврата:
обновление будет прервано;
продолжено. После обновления будет произведен запуск командной строки с заданным параметром.
<Start>
<After>
<File Path="my.dll" Args="Install Dir\Prognoz Platform 8.0" Copy="1" NoExec="1" />
<File Path="regsvr32.exe" Args="-s "Install Dir\Prognoz Platform 8\my.dll"" NoDb="1">
<Return>
<Code Value="-1" Break="Y" />
</Return>
</File>
</After>
</Start>
После обновления первый элемент <File> копирует файл my.dll из каталога обновления в каталог установки Prognoz Platform 8 (Install Dir\Prognoz Platform 8), второй элемент <File> регистрирует скопированный файл my.dll и проверяет код возврата.
Если на компьютере не установлен Microsoft SQL Native Client, то в папку с обновлением поместите два файла cfgconfig.xml и sqlncli.exe. Файл cfgconfig.xml должен иметь следующую структуру:
<Start>
<Before>
<File Path="sqlncli.exe"/>
</Before>
</Start>
До обновления будет установлен Microsoft SQL Native Client.

Обработка кода
возврата (<Code>)
Создайте в разделе <File> подраздел <Code>.
| Атрибут | Описание |
| Value | Значение кода возврата. |
| Message | Определяет сообщение. |
| Break | Определяет код, при котором операция будет прервана или
продолжена:
Y. Операция будет прервана; N. Операция будет продолжена. |
<Start>
<Before>
<File Path="cmd.exe" Args="/C">
<Return>
<Code Value="0" Message="Success" Break="N" />
<Code Value="-1" Message="Fail" Break="Y" />
</Return>
</File>
</Before>
<After>
<File Path="cmd.exe" Args="/C" />
</After>
</Start>
До начала обновления будет произведен запуск командной строки с заданным параметром и обновление:
будет прервано, если код возврата равен «-1», будет выдано заданное сообщение;
будет продолжено, если код возврата равен «0», будет выдано заданное сообщение.

Определение
настроек по наличию и версии файла (<FileCondition>)
В разделе <File> создайте подраздел <FileCondition>. Данный раздел является необязательным подразделом <File>. Позволяет проверить наличие и версию файла, и в случае наличия переопределить настройки для файла, заданные в разделе <File>, такие как Path, Args, Copy, NoExec и др. Действие, переопределенное для исходного файла, будет произведено после проверки всех условий, содержащихся в разделе <File>. Если атрибут Path переопределен, но значение его пустое, то файл, заданный в разделе <File>, устанавливаться не будет.
| Атрибут | Описание |
| FileName | Полное имя файла, существование которого требуется проверить. В имени файла возможно использование системных и пользовательских переменных окружения в виде %variable%. Системные переменные: %AllUsersProfile%, %AppData%, %CommonProgramFiles%, %HomeDrive%, %SystemDrive%, %HomePath%, %UserProfile%, %WinDir%, %SystemRoot%. |
| VersionMask | Маска версии файла. Данный атрибут может отсутствовать. Если атрибут задан, то версия файла, указанного в «FileName», проверяется на соответствие этой маске. Если файл найден и соответствует маске, то настройки (например, Path) берутся из этого элемента. |
| Cmp | Тип сравнения версии. Возможные значения EQ (Равно), LEQ (меньше или равно), GEQ (больше или равно), LS (меньше), GT (больше). Если атрибут отсутствует, то по умолчанию будет использовано значение EQ. |
| IsDefault | Определяет выполнение условия без проверки идентифицирующих
атрибутов (FileName, VersionMask, Cmp ). Если атрибуту
задано значение True,
то идентифицирующие атрибуты не проверяются и считается, что
условие выполнилось. Если в условии указан только атрибут
IsDefault="True", то с исходным файлом будет произведено
действие, заданное в разделе <File>. Действие выполняется
после проверки всех условий, содержащихся в разделе <File>.
По умолчанию атрибут имеет значение False. |
В папке обновления должны находиться дистрибутивы msxml6_x64.exe и msxml6_x86.exe.
<Start>
<Before>
<File Path="msxml6_x86.exe">
<FileCondition FileName="%systemroot%\system32\msxml6r.dll" Cmp="GEQ" VersionMask="6.*" Path="" />
<FileCondition IsDefault="True" />
<OsCondition Platform="x64" Path="msxml6_x64.exe" />
</File>
</Before>
</Start>
Перед установкой Prognoz Platform 8 будет проверено наличие файла msxml6r.dll:
если файл найден и его версия соответствует заданной, то запуск файла msxml6_x86.exe произведен не будет (Path="");
если файл не обнаружен или его версия не соответствует заданной (Cmp, VersionMask), то начнется проверка условия (OsCondition). В зависимости от выполнения условия будет запущен msxml6_x86.exe или msxml6_x64.exe.

Определение
настроек файла для конкретной операционной системы и платформы (<OsCondition>)
Для определения настроек файла для конкретной операционной системы и платформы создайте в разделе <File> подраздел <OsCondition>. Данный подраздел не является обязательным.
В элементе <OsCondition> могут быть переопределены атрибуты <File>, такие как Path, Args, Copy, NoExec и др. Действие, переопределенное для исходного файла, будет произведено после проверки всех условий, содержащихся в разделе <File>. Если атрибут Path переопределен, но значение его пустое, то файл, заданный в разделе <File>, устанавливаться не будет.
| Атрибут | Описание |
| OsName | Название операционной системы. Возможные значения: WinVista, Win7, WinServer2008, WinServer2008R2. |
| OsVersion | Версия операционной системы в формате MajorVersion.MinorVersion. Используется отдельно от «OsName». В таблице ниже приведены значения MajorVersion и MinorVersion для операционных систем. MinorVersion может отсутствовать, например: OsVersion = "5". В этом случае условие применяется ко всем ОС, у которых MajorVersion = 5. |
| ServicePack | Номер пакета обновления. Значение указывается через точку с запятой. Например: ServicePack = "2;3". Это означает, что файл будет установлен для SP2, SP3. |
| Platform | Платформа. Возможные значения: x86, x64. Если платформа не указана, то файл выполняется для всех платформ. |
| Cmp | Тип сравнения версии ОС. Возможные значения EQ (Равно), LEQ (меньше или равно), GEQ (больше или равно), LS (меньше), GT (больше). Если атрибут отсутствует, то по умолчанию будет использовано значение EQ. |
| IsDefault | Определяет выполнение условия без проверки идентифицирующих
атрибутов (OsName, OsVersion, ServicePack и др.). Если атрибуту
задано значение True,
то идентифицирующие атрибуты не проверяются и считается, что
условие выполнилось. Если в условии указан только атрибут
IsDefault="True", то с исходным файлом будет произведено
действие, заданное в разделе <File>. Действие выполняется
после проверки всех условий, содержащихся в разделе <File>.
По умолчанию атрибут имеет значение False. |
| Операционная система | MajorVersion | MinorVersion |
| Windows 7 | 6 | 1 |
| Windows Server 2008 R2 | 6 | 1 |
| Windows Server 2008 | 6 | 0 |
| Windows Vista | 6 | 0 |
В папке обновления должны находиться дистрибутивы wic_x86_enu.exe и wic_x64_enu.exe.
<Start>
<Before>
<File Path="wic_x86_enu.exe" Args="/quiet /norestart" >
<FileCondition FileName="%systemroot%\system32\WindowsCodecs.dll" Cmp="GEQ" VersionMask="6.0.5840.16388" Path="" />
<FileCondition IsDefault="True" />
<OsCondition OsName="WinServer2008" ServicePack="2;3" Platform="x86" />
<OsCondition OsName="WinServer2008" Platform="x64" Path="wic_x64_enu.exe" />
</File>
</Before>
</Start>
Перед установкой Prognoz Platform 8 будет проверено наличие файла WindowsCodecs.dll:
если файл не обнаружен или его версия не соответствует заданной (Cmp, VersionMask), то начнется проверка условий (OsCondition). Если обновление производится:
в ОС WinServer2008 SP2 или SP3, то будет запущен файл wic_x86_enu.exe;
в 64-разрядной ОС WinServer2008, то будет запущен файл wic_x64_enu.exe;
в других ОС файл запущен не будет;
если файл найден и его версия соответствует заданной, то запуск файла wic_x86_enu.exe произведен не будет (Path="").

Определение
настроек по наличию и значению ключа в реестре (<RegistryCondition>)
Создайте в разделе <File> подраздел <RegistryCondition>. Данный раздел является необязательным подразделом <File>. Отвечает за настройку файла в зависимости от наличия и значения ключа в реестре. Если ключ найден, и значение соответствует значению, указному в «KeyValue», то настройки (например, Path) берутся из этого элемента. В случае если заданы «KeyPath» и «KeyName», проверяется наличие данного ключа. В случае если «KeyName» и «KeyValue» не заданы, проверяется только наличие ветки реестра. В элементе <RegistryCondition> могут быть переопределены атрибуты <File>, такие как Path, Args, Copy, NoExec и др. Действие, переопределенное для исходного файла, будет произведено после проверки всех условий, содержащихся в разделе <File>. Если атрибут Path переопределен, но значение его пустое, то файл, заданный в разделе <File>, устанавливаться не будет.
| Атрибут | Описание |
| KeyPath | Путь в реестре до ключа. Указывается относительный путь (без HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER), ключ ищется сначала для ветки USER, затем для ветки LOCAL_MACHINE. |
| KeyName | Имя ключа. Необязательный атрибут. |
| KeyValue | Значение ключа. Необязательный атрибут. |
| IsDefault | Определяет выполнение условия без проверки идентифицирующих
атрибутов (KeyPath, KeyName, KeyValue). Если атрибуту задано
значение True, то
идентифицирующие атрибуты не проверяются и считается, что
условие выполнилось. Если в условии указан только атрибут
IsDefault="True", то с исходным файлом будет произведено
действие, заданное в разделе <File>. Действие выполняется
после проверки всех условий, содержащихся в разделе <File>.
По умолчанию атрибут имеет значение False. |
В папке обновления должен находиться дистрибутив dotNetFx40_Full_x86_x64.exe.
<Start>
<Before>
<File Path="dotNetFx40_Full_x86_x64.exe" Args="/passive /promptrestart /showfinalerror">
<RegistryCondition KeyPath="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" KeyName="Install" KeyValue="1" Path=""/>
<RegistryCondition IsDefault="True" />
</File>
</Before>
</Start>
Перед установкой Prognoz Platform 8 будет проверено наличие ключа в реестре:
если запись в реестре есть, то дистрибутив запущен не будет (Path="");
если записи нет, то будет запущен дистрибутив для установки (IsDefault="True").

Создание системных
переменных среды и переменных среды пользователя (<Var>)
Для определения системных переменных среды и переменных среды пользователя создайте раздел <Var> в cfgconfig.xml и определите соответствующие атрибуты.
Примечание. В переменные среды пользователя добавляются все системные переменные.
| Атрибут | Описание |
| Name | Определяет имя переменной окружения. |
| IsUser | Определяет, будет ли переменная пользовательской. Доступные значения: true, false. |
| Val | Определяет значение переменной. |
<Start>
<Before>
<Var Name="var_test" Val="var_val_test" />
</Before>
</Start>
До обновления будет создана переменная окружения var_test со значением var_val_test.
<Start>
<Before>
<Var Name="var_test" IsUser="true" Val="var_val_test" />
</Before>
</Start>
До обновления будет создана переменная среды пользователя var_test со значением var_val_test.

Установка
msi-файла с получением файла лога (<Log>)
Для проведения установки msi-файла с получением файла лога создайте раздел <Log> в cfgconfig.xml и определите соответствующие атрибуты.
| Атрибут | Описание |
| File | Определяет путь к файлу, в который будет помещен лог. |
| Mode | Определяет тип информации, поступающей в лог. Значение
атрибута может представлять одно или несколько значений.
Подробное описание можно найти в специализированной литературе (MSDN). |
| Attrs | Определяет, как часто буфер лога должен очищаться.
Подробное описание можно найти в специализированной литературе (MSDN). |
<Start>
<Log File="C:\ppinstall.log" Mode="Warning|User|Info" Attrs="Append|FlushEachLine" />
</Start>
При обновлении будет создан лог выполнения обновления.

Определение
действий с предыдущими установленными релизами и проверка целостности
файлов (<Msi>)
Создайте раздел <Msi> для определения действий при автообновлении с предыдущими установленными релизами АК «Прогноз-5» и Prognoz Platform и для настройки проверки целостности исполняемых файлов.
| Атрибут | Описание |
| RemoveMode | Определяет, удалять ли предыдущие установленные релизы
АК «Прогноз-5» и Prognoz Platform 8:
|
| CheckControlSums | Определяет, будет ли при каждом запуске Prognoz Platform 8 проверяться
целостность исполняемых файлов и соответствие их содержимого
эталону:
|
<Start>
<Msi RemoveMode="none" CheckControlSums="True"/>
</Start>
Все установленные ранее релизы будут оставлены, будет включена проверка целостности исполняемых фалов.
Для удаления конкретного релиза или справочной системы в файле cfgconfig.xml создайте раздел <After> c подразделом <File> и в нем укажите атрибуты Path и Args аналогично примеру.
<Start>
<After>
<File Path="msiexec.exe" Args='/qn /x {4B7BC2B5-F02D-4CBE-B177-06DCAA4704F1}' NoDb="1"/>
</After>
<Msi RemoveMode="none" />
</Start>
В данном случае будет произведено обновление, останутся все установленные релизы, кроме 20-го, который был принудительно удален после обновления.
Атрибут Args может быть задан с различными аргументами:
Args='/x {<GUID>}' - удаление указанного релиза/справочной системы;
Args='/qn /x {<GUID>}' - удаление указанного релиза/справочной системы в «тихом» режиме.
<GUID> - это код АК «Прогноз-5» или Prognoz Platform для определенного релиза/справочной системы, который необходимо удалить. При необходимости код релиза можно запросить в технической поддержке, отправив запрос на адрес support@fsight.ru или используя сервисы технической поддержки, которые доступны после регистрации на сайте.
См. также: