Как ТБ.Корпорация хранит информацию о настройках

I. Зачем это нужно.

Для работы сервера или клиента ТБ.Корпорации требуется решить две задачи:

  • хранить где-то настройки программы между сессиями;
  • уметь находить эти файлы при запуске программы.

Для решения этих задач в ТБ.Корпорации предусмотрены следующие решения:

  • настройки хранятся, в основном, в текстовых файлах формата INI или XML, часть которых будет рассмотрена ниже;
  • при запуске клиента или сервера ТБК данные файлы ищутся по путям, которые могут быть записаны либо в файле tb.ini, лежащем в каталоге запуска ТБК, либо в реестре машины, на которой стартует клиент или сервер, если файл tb.ini в каталоге запуска отсуствует.

II. Определение путей к настроечным файлам.

В момент запуска программы (под «программой» далее понимается клиент ТБК, сервер или сервер расчетов) ей известен только один каталог на диске - каталог ».», т.е. каталог запуска. Именно в нем программа может найти информацию об остальных каталогах, в которых лежат проекты, информационные базы и настроечные файлы. Поэтому в каталог запуска, рядом с tbw.exe, можно положить файл tb.ini, задающий пути для поиска остальных компонент программы.

Пример файла tb.ini:

[Client\Paths]
Bin=.
Help=..\Help
Wrk=..\Work
Projects=..\Projects
Templates=..\Templates
Settings=..\Settings
Connect=..\Connect
Temp=..\Temp

[Server\Paths]
Bin=.
Projects=..\Projects
UserDatas=..\Work
Settings=..\Settings
Backup=..\Server\Backup
Replication=..\Server\Replication
Logging=..\Server\Logging
Temp=..\Temp\Server

[Calc\Paths]
Settings=..\Settings
Temp=..\Temp\Calc

Обратите внимание, что:

  1. Файл tb.ini задает только пути к другим каталогам. А уже в этих каталогах лежат другие настроечные файлы, задающие параметры программы.
  2. Пути могут быть заданы относительно каталога запуска, как это показано в примере. Такое решение позволяет унифицировать структуру tb.ini (фактически, он отличается на разных серверах только UNC-путем к каталогу проектов), а также устанавливать на одной машине несколько инсталляций серверов - в этом случае все дерево каталогов можно просто скопировать в другое место и таким образом размножать инсталляции.
  3. В приведенном примере файл tb.ini задает пути сразу для трех программ - клиента ТБК, сервера данных и сервера расчетов. Это имеет побочный эффект - если на нескольких клиентских компьютерах сделать ярлыки на tbw.exe, то все они будут создавать свои временные файлы (Temp, Connect) в ОДНОМ И ТОМ ЖЕ месте, причем НА СЕРВЕРЕ. Эта проблема должна решаться применение загрузчика tb.exe, который загрузит tbw.exe с сервера в BIN на клиентском компьютере, после чего каталогом запуска, от которого в соответствии с tb.ini отсчитываются пути, будет уже клиентский BIN.

Хотя эффект, описанный в п.3, решается с помощью загрузчика (а также есть вариант решения этой проблемы без него - нужно написать на клиенте собственный tb.ini и передать его в параметрах запуска tbw.exe), его лучше просто избегать. В сущности, tb.ini необходим только для варианта мультиинстансной установки программы на один компьютер. Если на одной машине работает только один клиент или сервер (как у большинства наших заказчиков), файл tb.ini можно просто не класть в BIN. Тогда все пути будут искаться по-старому, в реестре машины, на которой запускается программа (не путать с каталогом запуска! При запуске tbw.exe на клиентской машине через ярлык с сервера каталог запуска находится на сервере, но реестр используется на клиенте, что не дает возникнуть эффекту из п.3).

Ниже приводится пример reg-файла, задающего пути поиска:

[HKEY_LOCAL_MACHINE\SOFTWARE\TBSoft\Tbw\7.5\Client\Paths]
"Bin"="C:\\TB75\\Bin"
"Projects"="C:\\TB75\\Projects"
"Templates"="C:\\TB75\\Templates"
"Settings"="C:\\TB75\\Settings"
"Connect"="C:\\TB75\\Connect"
"Temp"="C:\\TB75\\Temp"

[HKEY_LOCAL_MACHINE\SOFTWARE\TBSoft\Tbw\7.5\Server\Paths]
"Bin"="C:\\TB75\\Bin"
"Projects"="C:\\TB75\\Projects"
"UserDatas"="C:\\TB75\\Work"
"Settings"="C:\\TB75\\Settings"
"Replication"="C:\\TB75\\Server\\Replication"
"Backup"="C:\\TB75\\Server\\Backup"
"Logging"="C:\\TB75\\Server\\Logging"
"Temp"="C:\\TB75\\Temp\\Server"

[HKEY_LOCAL_MACHINE\SOFTWARE\TBSoft\Tbw\7.5\Calc\Paths]
"Settings"="C:\\TB75\\Settings"
"Temp"="C:\\TB75\\Temp\\Calc"

Обратите внимание, что:

  1. Так же, как и в tb.ini, пути для клиента, сервера данных и сервера расчетов задаются по-отдельности - это разные программы.
  2. Пути задаются абсолютными путями, т.к. нет точки отсчета для относительных путей. Поэтому считывание путей из реестра нельзя использовать для мультиинстансной установки.

В наиболее распространенном случае - когда используется одна инсталляция - использование реестра для хранения путей является удобным средством, т.к. избавляет от проблемы случайного затирания tb.ini. Можно использовать комбинированный вариант установки - например, на ноутбуке автора этих строк три инсталляции ТБК, одна из которых является «основной» и, не используя tb.ini, берет пути из реестра, и две являются дополнительными, их пути задаются файлами tb.ini. Все три инсталляции вполне работоспособны, даже при одновременном запуске.

III. Остальные настроечные файлы.

Взяв пути из tb.ini или из реестра, программа может найти остальные настроечные файлы. При этом используются следующие правила:

  1. Если файл не найден, он создается (сразу или при добавлении в него первой информации).
  2. Если путь к группе файлов не найден, он создается в каталоге запуска, в BINе, т.к. это единственный каталог, в постоянном существовании которого уверена программа.

Именно поэтому иногда настроечные файлы появляются в BINе, или дублируются в BINе и в других местах - все это результат неправильного (неполного) состава путей в tb.ini или в реестре.

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

  1. Servers.ini. Ищется в группе файлов Settings (т.е. в строке «Settings=» файла tb.ini или в соответствующем параметре в реестре). В этом файле хранятся настройки, важные для функционирования клиента, сервера данных и сервера расчетов (номер порта, список лицензий, время пассивного ожидания, размер кеша нотификаций и т.п.). Обратите внимание, что поскольку данный файл используется сразу тремя программами, то пути к нему задаются в трех местах - как «Settings» клиента, сервера данных и сервера расчетов. Если какой-то из этих путей не задан, то файлов Servers.ini будет два - для тех программ, для которых пути заданы нормально, он будет в папке Settings (или куда еще указывает настройка «Settings»), а для тех, для которых не заданы - в BINе. Аналогичный эффект будет, если у разных программ «Settings» указывает на разные каталоги.
  2. ServerObjects.xml. Хранится в группе файлов Settings. В этом файле перечисляется список проектов, физических баз и информационных баз, установленных на сервере данных. Имеет смысл только на компьютерах, на которых установлен сервер данных (в т.ч. локальный). Также в этом файле хранится уникальный номер сервера. Как правило, данный файл не требует ручного редактирования - он изменяется через окно администрирования сервера. Единственные известные мне случай ручного редактирования файла ServerObjects.xml - это изменение номера сервера (например, чтобы получить на него репликацию) и копирование сервера на другую машину вместе с проектами (поскольку базы не копируются, проще удалить из файла информацию о базах, чем вручную регистрировать на новом сервере все проекты).
  3. Остальные файлы обычно не редактируются вручную, поэтому дадим только их обзор:
    • ServersList.xml - список серверов, известных на данной машине.
    • Users.xml - список групп пользователей и пользователей, зарегистрированных на данном сервере. Каждому пользователю и группе пользователей, записанных этом файле, соответствуют XML-файлы с расширениями .grp и .usr, хранящиеся в папке Settings\UserRights. В этих файлах задаются права групп и пользователей.
 
studio/config_files.txt · Последние изменения: 2016/04/15 15:26 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki