Основной файл инициализации клиента

From SunFlurry wiki
Jump to: navigation, search

Конфигурация запуска клиентов может быть произведена двумя основными путями: с помощью ключей командной строки (этот способ может быть неудобен при установке консольного клиента в виде сервиса операционной системы) и с помощью файла инициализации. Файлы инициализации обычно имеют стандартные имена, зависящие от типа клиента и должны находиться в папке исполняемого файла клиента. Для визуальных клиентов стандартное имя файла инициализации sf_clientg.ini, для консольных -- sf_client.ini. Файлы инициализации являются текстовыми файлами в форматах ANSI или UTF-16. Для формата UTF-16 в файле всегда должен присутствовать соответствующий BOM. Файл инициализации имеет структуру дерева и делится на ветки и переменные. Каждая ветка содержит полный путь и записывается в квадратных скобках. Каждая переменная записывается в виде <ИмяПеременной>="<Значение переменной>". При этом кавычки разрешается опускать. Файлы могут содержать комментарии. Комментарием является строка, начинающаяся на знак ; (точка с запятой). Пример файла в этом формате см. в статье Установки сервера.

Основной файл инициализации sf_client(g).ini

Файл обычно хранится в каталоге исполняемого файла программы клиента, и содержит основные его настройки, каталог баз данных и пр. Ниже дается список веток и переменных, которые используются в файле. Если ветка или переменная необходимы, они помечены как таковые, большинство же веток и переменных можно опустить. При установке системы с помощью программы-установщика в файле инициализации сервера могут присутствовать не все ветки и переменные, описанные ниже.

  • Переменные, не входящие в какие-либо ветки.
    • Переменная ServiceName (только консольные клиенты) указывает на имя сервиса операционной системы, используемое данной копией консольного клиента. По умолчанию это имя совпадает с именем исполняемого файла консольного клиента без расширения (т.е. "sfcc"). В случае, когда на одной машине используется более одного консольного клиента в режиме сервиса, для них необходимо указать разные имена в файлах инициализации, так как в системе не может существовать более одного сервиса с одним и тем же именем. Регистрацию и удаление сервиса можно произвести непосредственно из командной строки, нет необходимости использовать программы-установщики. К примеру, чтобы изменить имя сервиса консольного клиента с sfcc на sfcc2, нужно остановить сервис sfcc.exe stop, отменить регистрацию сервиса sfcc.exe deinstall, изменить значение этой переменной на sfcc2 (или добавить переменную, если ее не существовало), зарегистрировать сервис снова sfcc.exe install и запустить его sfcc.exe start. Для дополнительной информации, см. ключи запуска клиентов из командной строки ниже.
    • Переменная Loglevel задает то, насколько подробной будет информация, помещаемая в файл лога клиента (обычно это файл sfсс.log для консольных клиентов и sfсg.log для визуальных клиентов). Значением переменной может быть число от 0 до 2, при этом при 0 логи записываться не будут, 2 в логах будет вестись максимально подробная информация. По умолчанию для визуального клиента значение этой переменной равно 1, для консольного 2. Важно: пользовательская информация, выводящая с помощью функций, типа Message в лог консольного клиента не зависит от этой установки, установка влияет только на системные сообщения.
    • Переменная LogFile задает имя файла для ведения логов клиентом. По умолчанию файл располагается в папке исполняемого файла клиента.
    • Переменная BreakOnExceptions задает режим, когда исключения в программе автоматически открывают отладчик при наличии прав отладки. Данная переменная доступна также из меню отладчика. По умолчанию режим отключен.
    • Переменная StartInDebugger задает режим, когда при запуске клиента до начала исполнения первого исходного файла (это чаще всего module.sf) будет открыт отладчик, исполнение будет остановлено на первой строке исходного кода. Такой режим может использоваться для отладки. По умолчанию режим отключен.
    • Переменная AdditionalSourcePaths задает путь к исходным файлам проекта, находящимся на локальном диске или в локальной сети. Если получение исходных текстов с сервера недоступно (к примеру, недостаточно прав), можно задать здесь путь к локальной папке исходных текстов проекта, чтобы отладчик смог их найти.
    • Переменная DebuggingRights задает режим доступности отладчика. Если этот режим установлен, отладчик будет доступен при работе (его можно открыть в любой момент с помощью комбинации клавиш Alt+Ctrl+C, он также может быть открыт автоматически при исключениях или с помощью функции Debugbreak). Нужно понимать, что исходные тексты проекта с сервера разрешено получить только пользователям с административными правами, а без исходных текстов, отладка не будет иметь большого смысла. По умолчанию этот режим выключен.
    • Переменная BinaryUpdateMode задает режим загрузки обновления файлов клиента с сервера при их наличии. Обновления выполняются в момент регистрации пользователя на сервере, если текущая версия файлов клиента не совпадает с версией файлов обновления на сервере. Обновления не загружаются с сайта интернета, выполнение обновлений находится на усмотрении и под управлением администратора сервера (см. Общая информация о сервере базы данных). Режим может принимать следующие значения:
      • 0 (по умолчанию) -- обновления бинарных файлов будут автоматически загружены с сервера и установлены.
      • 1 -- перед обновлением, пользователю будет задан вопрос о необходимости установки файлов обновления. Если пользователь отказывается от обновления, в регистрации на сервере будет отказано.
      • 2 -- пользователю будет сообщено, что для работы с базой данных необходимо обновление файлов клиента, однако, администратор отключил обновления данного для данной установки, после чего работа клиента будет завершена. Такую защиту можно использовать, если клиент работает со старой базой данных, которая не поддерживается или неверно поддерживается новой версией клиента. При обновлении версий файлов, однако, всегда соблюдается обратная совместимость.
    • Переменная RestartOnFaults (только консольные клиенты) задает режим перезапуска консольного клиента, если он был завершен в результате сбоя. Если этот режим включен, после сбоя, клиент, до своего завершения, попытается запустить свою копию. Режим имеет смысл для клиентов, работающих в режиме приложения, так как в режиме сервиса предусмотрен автоматический перезапуск при сбоях. По умолчанию этот режим включен.
    • Переменная NoExecutableUpdates задает режим, когда наличие обновлений файлов клиента на сервере будет игнорировано. По умолчанию, этот режим отключен. Такой режим может использоваться, к примеру, разработчиком системы, который компилирует новые версии файлов клиента и проверяет их работоспособность и корректность внесенных им изменений. В этом режиме клиент не будет проверять обновления на сервере.
    • Переменная LowVideoMemoryMode задает режим работы программы, позволяющий не допустить сбои клиента, когда на компьютере используется видеокарта с малым количеством видео памяти, либо в режиме сервера терминалов. Данный режим переводит многие экранные элементы в безбуферный режим (обычно они работают с дополнительным буфером для уменьшения мигания изображения), это позволяет экономить видео память операционной системы. Для терминальных компьютеров рекомендуется использовать такой режим, иначе большое количество созданных отчетов может исчерпать видео память и привести к отказу работу клиента. По умолчанию, этот режим выключен.
    • Переменная UseSystemKeyboardHook задает режим, когда для отлова нажатий на клавиши клавиатуры будет использоваться системная процедура отлова, вместо диспетчера сообщений приложения. Обычно не должно быть никакой разницы между двумя режимами. Переменная дана для отладки режимов, и по умолчанию принимает значение 1.
    • Переменная DBSelectorReadonly задает режим, когда все базы данных заданы только в файле инициализации клиента. Пользователь не сможет добавить новую базу, удалить ее или изменить свойства любой базы данных. Может использоваться, когда требуется запускать несколько разных клиентов и список баз данных для них также должен быть разным.
    • Переменная DBCatalogFiles задает путь к дополнительному каталогу баз данных, информация из которого будет загружена наряду со список, указанных в этом файле. С помощью этого каталога, администратор может создать среду, в которой при изменении или добавлении новой базы данных, достаточно будет сделать изменения только в одном файле каталога, а не на всех клиентских компьютерах. См. статью Установка сервера и клиентов в корпоративной сети.
  • Каталог (список) баз клиента следует за указанными выше переменными. Каждое объявление базы в этом случае использует свою ветку. Данный каталог используется как начальный каталог, базы из которого копируются при запуске в рабочий каталог (см. параграф ниже). Для консольных клиентов всегда используется только одна база данных с наименованием DATABASE, если ветки с этим наименованием в файле инициализации нет, будет использована первая заданная база файла. Ветки с базами данный начинаются с [<Папка базы данных>\<Имя ветки базы данных>], все последующие переменные относятся к этой базе данных до того, как будет встречена следующая ветка. Для графического представления списка баз данных, см. статью Диалоги регистрации в базе данных. В ветке базы данных могут присутствовать следующие переменные:
    • Default -- переменная задает базу данных списка, которая будет загружена по умолчанию, без показан списка. Обычно это последняя работавшая база данных. Нужно понимать, однако, файл инициализации не обновляется клиентом автоматически (см. следующий параграф), поэтому, данная установка будет начальной. Переменная может принимать значения 0 или 1.
    • Caption -- переменная задает заголовок базы данных, который будет виден в списке баз данных. Наименование базы данных в диалоге регистрации пользователя загружается с сервера базы данных, данное представление используется только в диалоге выбора базы данных.
    • TCPPassword -- переменная задает пароль от сервера базы данных. Этот пароль не является паролям пользователя в момент его регистрации на сервере. Этот пароль необходим до пароля пользователя, чтобы получить доступ к серверу и вывести диалог ввода имени пользователя и пароля.
    • Type -- переменная задает тип базы данных. Переменная в основном полезна для консольных клиентов, работающих с файловым проектом без доступа к серверу баз данных. Переменная может принимать следующие значения:
      • 0 -- данная база данных является файловой базой данных (переменная Source указывает на локальный файловый путь)
      • 1 (по умолчанию) -- данная база данных является базой данных сервера (переменная Source указывает IP адрес и порт сервера)
    • Source -- переменная задает путь к файлам проекта для файловых баз данных или адрес и порт сервера для баз данных на сервере. Она может принимать следующие значения:
      • <Путь\> -- для файловой базы данных
      • <IP-адрес:Порт>[,<IP-адрес:Порт>] -- для серверной базы данных. При указании более одного IP-адреса, соединение будет установлено с последующим IP-адресом, если предыдущее соединение невозможно установить.
    • DatabaseName -- переменная задает краткий идентификатор базы данных, используемый для регистрации базы данных в клиенте. Переменная не обязательна к использованию.
    • UserName -- последнее имя пользователя, под которым был осуществлен доступ к этой базы данных. Нужно понимать, однако, файл инициализации не обновляется клиентом автоматически (см. следующий параграф), поэтому, данная установка будет начальной.
    • Password -- задание пароля в файле инициализации позволяет для базы данных, загружаемой по умолчанию, пропустить отображение диалога ввода пароля и загрузить базу данных. Если пароль неверный, будет выведен диалог ввода пароля. Для консольных клиентов эта переменная обязательна, так как консольный клиент работает на сервере без возможности ввода информации пользователем.
    • ReadOnly -- переменная задает режим, когда изменение свойств этой базы данных из диалога выбора баз данных будет запрещено. Таким образом администратор может убедиться, что пользователь случайно не испортит параметры загрузки базы данных, тем самым создав лишнюю работу администратору. Переменная может принимать значения 0 или 1, по умолчанию она равна нулю.
    • Compression -- переменная задает режим сжатия при передаче пакетов между сервером и клиентом, данный режим рекомендуется к использованию и по умолчанию он включен.
    • SlowConnection -- переменная задает режим медленного подключения клиента к серверу, при котором некоторые функции загрузки внутри клиента будут оптимизированы для уменьшения количества запросов. Переменная никак не влияет на поведение сервера, изменяется только поведение клиента и программы проекта, которая может оптимизировать нужные функции или загружать другие формы в этом режиме. Программа может узнать о медленном подключении с помощью функции IsSlowConnection.

Файл каталога баз данных визуального клиента

Каталог баз данных, который визуальный клиент использует при запуске, находится в файле DatabaseList.ini в папке личных документов пользователя. При запуске клиента, однако, записи этого файла обновляются из файла инициализации клиента и файла дополнительного каталога баз данных клиента, который задается в переменной DBCatalogFiles файла инициализации. Такой способ работы позволяет пользователю создавать соединения с базами данных вручную, при этом, базы данных из общего каталога всегда будут заданы администратором, что исключает лишнюю работу, если пользователь случайно удалит нужную базу данных и не будет знать всех свойств для ее добавления. В организациях список баз данных обычно создается и изменяется администраторами, поэтому, при создании системы был сделан упор на каталог базы данных, а не на ручное внесение баз в список. Демонстрационная версия программы не содержит диалога выбора баз и игнорирует изменения в списках баз данных в файлах инициализации.

Файл основных свойств проекта sfstudio.sfprj

Файл задает основные пути и установки для работы с исходными текстами проекта в Студии. Файл находится в корневой папке исходных текстов проекта. Самая главная его задача -- указание на путь, куда будут помещены скомпилированные тексты проекта. Из папки с компилированными текстами будет происходить развертывание проекта на локальный или удаленные серверы. Ниже перечислены возможные дополнительные переменные, которые могут быть использованы в данном файле:

  • Переменные ветки Deployment:
    • Переменная ResultPath содержит (обычно относительный) путь к компилированным файлам проекта. Переменная обязательно должна быть задана.
  • Переменные ветки Common:
    • Переменная VersionScheme содержит шаблон формирования версии прокта (см. Установки проекта).
    • Переменная UpdateBuildOnFullCompile содержит установку увеличения номера версии только при полной компиляции (см. Установки проекта).
    • Переменная DoNotBaseUpdatesOnFileTime позволяет не проверять время изменения файлов на удаленных серверах при развертывании проекта. Обычно система проверяет как время файлов, так и контрольную сумму их содержимого. Это позволяет не потерять информацию о времени изменения, однако, иногда это неудобно, так как рождает обновления большого количества файлов в проекте, если они были получены таким способом, что оригинальное время их изменения не было сохранено. Данная переменная позволяет выключить режим проверки времени.
    • Переменная DoNotUpdateDepl позволяет не форсировать обновление файла SFCDepl.exe, если его версия (содержимое) отличается на удаленной стороне. Если файла на удаленной стороне вообще нет, данная переменная будет проигнорирована.
    • Переменная StudioExcludedFolders задает список файлов и папок, исключенных из синхронизации при развертывании проекта на удаленных серверах (см. Установки проекта).

Ключи запуска визуальных и консольных клиентов из командной строки или ярлыка

При запуске визуального или консольного клиентов из командной строки могут применяться ключи, позволяющие изменить параметры запуска клиентов. Формат запуска исполняемого файла клиента при этом следующий: <Исполняемый файл клиента> [<Путь и имя файла инициализации (имя файла должно оканчиваться на .ini)>] [[-]<Наименование ключа>[=<Значение ключа>]] [...]. Первым аргументом может идти путь и имя для подмены файла инициализации. Имя файла должно в этом случае должно иметь расширение ini. Файл инициализации, заданный в командной строке будет использован вместо стандартного файла инициализации. Дополнительные ключи, следующие далее в командной строке, могут менять индивидуальные параметры в файле инициализации или выполнять дополнительные действия:

  • Ключи BreakOnExceptions, StartInDebugger, DebuggingRights, RestartOnFaults, NoExecutableUpdates, LowVideoMemoryMode заменяются соответствующие переменные файла инициализации и могут не содержать части [=<Значение ключа>].
  • Ключи ServiceName, Loglevel, LogFile, AdditionalSourcePaths, BinaryUpdateMode, DBCatalogFiles заменяются соответствующие переменные файла инициализации и должны также содержать часть [=<Значение ключа>].
  • Ключи, относящиеся к базе данных, могут позволить выбрать и загрузить требуемую базу данных с помощью изменения командной строки. Принимаются следующие ключи: DatabaseName, Type, Source, UserName, Password, TCPPassword, Compression. Не требуется употребление всех ключей, задающих базу данных, одновременно. К примеру, ... -Password="..." может задавать пароль для базы данных, загружаемой по умолчанию, тем самым исключая вывод диалога регистрации в базе данных, если пароль задан верно.
  • Ключ GhostLogin позволяет запустить визуальный или консольный клиент в режиме, когда регистрация на сервере и выход не создают записей login/logout в таблице журнала регистрации событий. Этот режим может быть полезен, к примеру, для использования консольного клиента для выполнения программ из командной строки, чтобы не увеличивать базу данных при каждом запуске, если клиент запускается достаточно часто.
  • Ключ INSTALL используется только для консольного клиента и позволяет установить текущий исполняемый файл клиента в режиме сервиса, если он уже не установлен в этом режиме.
  • Ключ DEINSTALL используется только для консольного клиента и позволяет отменить установку текущего исполняемого файла клиента в режиме сервиса.
  • Ключ START используется только для консольного клиента и позволяет запустить текущий исполняемый файл клиента в режиме сервиса (он должен быть предварительно установлен в этом режиме).
  • Ключ STOP используется только для консольного клиента и позволяет остановить текущий исполняемый файл клиента, установленный в режиме сервиса.
  • Ключ RESTART используется только для консольного клиента и позволяет остановить текущий исполняемый файл клиента, установленный в режиме сервиса, после чего запустить его снова.
  • Ключ STATUS используется только для консольного клиента и позволяет вывести статус текущего исполняемого файла клиента. Возможны три статуса:
    • Сервис запущен (started) -- если клиент установлен в режиме сервиса и сейчас находится в памяти.
    • Сервис установлен, но не запущен (installed) -- если клиент установлен в режиме сервиса и но в данный момент остановлен.
    • Сервис не установлен (not found) -- если клиент не установлен в режиме сервиса.

Установка консольного клиента в виде сервиса операционной системы позволяет увеличить устойчивость его работы и исключить необходимость автоматической загрузки рабочего стола на сервере, чтобы осуществить запуск клиента без участия администратора. При установке клиента таким образом, операционная система сама следит возможными сбоями клиента и перезапускает его при их наличии. Для установки консольного клиента в режиме сервиса из командной строки достаточно использовать ключ INSTALL: sfcc.exe install.

Для создания ярлыка запуска визуального клиента с загрузкой определенной базы данных можно, к примеру, использовать следующую командную строку: <Путь>\SFCG.exe "Source=<IP адрес>:<Порт>" "UserName=<Имя пользователя>" "Password=<Пароль пользователя>" "TCPPassword=<Пароль соединения>".