Групповая установка 1С:Предприятия 8.1

Автор: Дмитрий Ощепков aka DmitrO
Редакция: 4 от 20.02.2009

Для решения задачи автоматической установки и обновления 1С:Предприятия на большом количестве компьютеров предлагается использовать групповые политики службы каталогов Windows (Active Directory). Об этом пойдет речь в данной статье.

Установка 1С:Предприятия

Состав дистрибутива 1С:Предприятия

  1. Программа setup.exe - предназначена для запуска процедуры инсталляции;
  2. Набор .ini файлов - предназначены для работы программы setup.exe и содержат ее строковые ресурсы на разных языках;
  3. Инсталляционный пакет для Windows Installer 1CEnterprise 8.1.msi - предназначен для собственно осуществления инсталляции системой Windows Installer и содержит всю конфигурацию и сценарий установки данного продукта; его также называют файлом базы данных инсталлера;
  4. CAB-файл Data1.cab - предназначен для хранения файлов составляющих сам продукт и используется в процессе инсталляции как источник файлов продукта;
  5. Начиная с 13-го релиза в состав дистрибутива включен набор mst файлов. Это файлы трансформации инсталяционного пакета для разных языков. Имя файла соответствует коду языка.

Для автоматической инсталляции через групповые политики необходимы только два файла: инсталляционный пакет (1CEnterprise 8.1.msi) и Data1.cab. Необходимо разместить их в сети на общем файловом ресурсе в одном каталоге и задать групповую политику в домене организации используя .msi файл. О том, как это сделать будет подробно рассматриваться ниже.

Штатный msi файл из дистрибутива составлен в нейтральном (английском) интерфейсе и по-умолчанию настроен таким образом, что продукт устанавливается почти в полном составе. Однако если запускать setup.exe, то мы видим инсталляцию в родном (русском) интерфейсе. Дело в том, что программа setup.exe сначала определяет текущие языковые настройки пользователя, затем локализует msi файл и потом запускает процесс инсталляции. При автоматической установке этот процесс не предусмотрен, поэтому в документации к продукту указано, что установка через групповые политики возможна только в английском интерфейсе. Начиная с 13-го релиза в состав дистрибутива включены mst файлы, которые также можно использовать при задании установки в групповой политике для локализации пакета.

Изменение инсталляционного пакета

Для решения задачи конфигурации продукта и изменения инсталляционного пакета (msi) предлагается VB-скрипт MakeV8Distr.vbs. С помощью него можно включать и выключать некоторые пункты в составе компонент продукта, а также провести локализацию пакета.

Синтаксис для запуска скрипта из командной строки:
cscript.exe MakeV8Distr.vbs <1CV8 installer database> [/l<Language>] [/t<transform file>] [/h<On|Off>] [/v<On|Off>] [/d<On|Off>] [/c<On|Off>] [/e<On|Off>]
<1CV8 installer database> - полное или относительное имя изменяемого msi файла 1С:Предприятия (инсталляционного пакета);
/l - выключает инсталляцию всех дополнительных интерфейсов кроме указанного;
<Language> - короткое имя языкового интерфейса;
/t - применяет файл трансформации;
<transform file> - полное или относительное имя локализующего файла трансформации пакета;
/h - включает или выключает установку HASP драйвера;
/v - включает или выключает установку конвертера баз V7;
/d - включает или выключает установку компонентов для настройки сервера хранилища;
/c - включает или выключает установку компонентов для клиент-серверных баз данных;
/e - включает или выключает установку дополнительного ярлыка на рабочий стол пользователя.

Где взять файл трансформации если дистрибутив до 13-го рализа? Этот файл формирует программа setup.exe после установки продукта через нее. Его можно с благодарностью позаимствовать из системного каталога инсталлера для этого продукта %SystemRoot%\Installer\{45FCC729-7789-479D-89A6-CE1AC809ADCA}. (имя последнего каталога соответствует коду продукта). Файл будет иметь имя в виде десятичного представления кода языка и тип mst (например для русского 1049.mst). Думаю, что трудностей в получении этого файла не возникнет т.к. разработчик всегда ставит продукт сначала на свой копьютер, используя setup.exe. Необходимо заметить, что файл трансформации может зависеть от релиза, и желательно применять соответствующие одному релизу файлы трансформации и .msi.

Скрипт также исправляет ошибку 00097458 в инсталяционном пакете, зарегистрированную и исправленную в 10м релизе и вновь появившуюся в последующих релизах.

Таким образом, процесс подготовки измененого инсталляционного пакета:
- установка продукта на свой компьютер используя setup.exe;
- получение .mst файла копированием из каталога инсталлера;
- создание копии оригинального .msi для изменения;
- изменение нового .msi с помощью скрипта MakeV8Distr.vbs.
Пример использования для русского интерфейса: cscript.exe MakeV8Distr.vbs "1CEnterprise 8.1 for clients.msi" /lRU /t1049.mst /hOff /vOff /dOff /eOn

Организация политики установки 1С:Предприятия

Для организации установки через групповые политики на клиентские компьютеры необходимо:

  • разместить полученный .msi файл и Data1.cab в одном каталоге на сетевом ресурсе файлового сервера;
  • создать в домене объект групповой политики;
  • в объекте групповой политики в разделе конфигурации компьютера задать установку программы 1С:Предприятие, используя размещенный на файловом сервере файл .msi;
  • в параметрах установки установить флажок "Удалять это приложение, если его использование выходит за рамки, допустимые политикой управления.". В этом случае при выходе компьютера из области применения приложение будет деинсталлировано;
  • задать область применения объекта групповой политики указав компьютеры, на которые требуется установить 1С:Предприятие;
  • для того чтобы установка шла с сетевого ресурса на WindowsXP (эта ОС позволяет выполнять асинхронную загрузку) необходимо также в объекте групповой политики включить административные шаблоны, которые отключают асинхронную загрузку "Система/Вход в систему - Всегда ожидать инициализации сети при загрузке и входе в систему" и "Система/Сценарии - Синхронное выполнение сценариев входа в систему".
  • Область применения для объекта групповой политики удобнее задавать группой, а потом включать компьютеры пользователей в эту группу.

    При применении описанного метода настройки, после включения компьютера в группу компьютеров, для которой задана политика установки 1С:Предприятия, при загрузке компьютера произойдет автоматическая установка 1С:Предприятия, после удаления компьютера из данной группы 1С:Предприятие будет деинсталлировано с компьютера.

    Групповая регистрация информационных баз 1С:Предприятия

    Установка на компьютерах пользователей только 1С:Предприятия выглядит не полной, так как обычно для работы нужны еще информационные базы. Для решения задачи автоматической регистрации информационных баз 1С:Предприятия на большом количестве компьютеров предлагается использовать групповые политики службы каталогов Windows (Active Directory) и расширение групповой политики пользователя написанное специально для решения этой задачи: GP1CV8IB.

    Расширение групповой политики

    Расширение групповой политики это штатная технология Microsoft разработанная для настройки программного обеспечения третьих фирм при помощи групповых политик на компьютерах пользователей. Собственно то, что мы видим в редакторе объекта групповой политики под узлами "Конфигурация программ" и "Конфигурация Windows" и есть расширения групповой политики, просто они установлены во время установки операционной системы и разработаны Microsoft. Microsoft также предлагает и рекомендует для настройки своего программного обеспечения разрабатывать и использовать собственные расширения. Со своей стороны Microsoft предоставляет базовый сервис для хранения этих настроек в глобальном каталоге Active Directory (глобальный каталог реплицируется между контроллерами домена, т.о. обеспечивается надежность каталога).
    Расширение GP1CV8IB представляет из себя саморегистрируемую DLL. Поскольку для работы этой DLL необходимы другие библиотеки, расширение распространяется в виде инсталляционного пакета (MSI).
    С помошью этой DLL идет как настройка объекта групповой политики, так и применение на компьютере пользователя этой групповой политики. Расширение должно быть установлено как на компьютер с которого идет настройка объекта ГП, так и на каждый компьютер где она будет применяться. Установка расширения на контроллер домена не является обязательной, т.е. если непосредственно с контроллера домена объекты ГП в части информационных баз 1С настраиваться не будут, то можно и не устанавливать это расширение на контроллер домена.
    Удобнее всего устанавливать расширение вместе с 1С:Предприятием через групповые политики. Таким образом везде где устанавливается 1С:Предприятие будет устанавливаться расширение GP1CV8IB для применения политики информационных баз 1С.

    Редактор объекта групповой политики

    В объекте групповой политики расширяется узел "Конфигурация пользователя / Конфигурация программ". Информационные базы добавляются и удаляются в редакторе объекта ГП. Параметры информационной базы задаются практически также как в диалоге регистрации информационных баз 1С:Предприятия. Указывается формат ИБ, путь к каталогу (он должен быть одинаково допустимым для всех компьютеров на которых будет применяться политика), имя кластера серверов 1С:Предприятия, имя ИБ в кластере.
    Отдельно необходимо сказать о группе. Для информационной базы может быть задана группа или целый путь из вложенных групп разделенных через слеш ("/"). При этом, после применения политики и запуска 1С:Предприятия группа будет создана 1С:Предприятием и информационная база будет помещена в группу. Однако если эта информационная база уже существовала в локальном списке информационных баз (в профиле пользователя ibases.v8i), то информационная база не будет помещена в группу, и группы создаваться не будут (это функциональное свойство 1С:Предприятия).
    Область применения объекта групповой политики удобнее всего задавать группой безопасности AD, а потом просто включать пользователей AD в эту группу.
    Расширение допустимо применять в доменах Windows 2000 и выше.

    Применение политики

    Результат применения политики это файл в профиле пользователя \Application Data\1C\1Cv81\GPIBList.v8l, содержащий ссылки на информационные базы объявленные во всех применяемых для данного пользователя объектах групповой политики.
    При запуске 1С:Предприятия этот файл анализируется 1С:Предприятием и дополняет или сокращает локальный список информационных баз. Принцип описан в документации к 1С:Предприятию. Кратко его можно изложить так: обеспечивается только наличие информационной базы. Их порядок в списке, порядок в дереве и расположение по группам в дереве может быть изменено пользователем. При этом изменить параметры регистрации такой информационной базы или удалить её, пользователь не сможет. В диалоге выбора информационной базы 1С:Предприятия эти действия будут недоступны. Поскольку управление расположением информационных баз в группах возложено на конечного пользователя регистрация групп информационных баз в объектах групповой политики не предусмотрена.
    Это расширние допускает асинхронную обработку применения политики. По-умолчанию компьютеры Windows выполняют обновление групповой политики каждые 60 минут, но со случайным смещением для того чтобы распределить нагрузку на сервер. Регулярное обновление групповой политики идет всегда асинхронно (обычно это не заметно для пользователя), поэтому после изменения политики, через некоторое время файл GPIBList.v8l может быть обновлен, в то время как пользователь работает. Также политика всегда применятся при входе пользователя (logon).
    Таким образом, на каком бы компьютере домена не зашел в систему пользователь, при входе Windows создаст ему профиль и применит заданную для него групповую политику, и пользователю всегда будут доступны определенные именно для него, информационные базы.

    Доработка конфигураций

    Если в ваших информационных базах существует возможность создавать пользователей из режима запуска 1С:Предприятие (не только из конфигуратора) существует также возможность доработать конфигурацию, чтобы не включать пользователей в область применения политики руками. А сделать это автоматически при записи пользователя в информационную базу 1С:Предприятия (если конечно для пользователя применяется аутентификация Windows). Все что необходимо сделать это научить конфигурацию добавлять пользователя в соответствующую группу, и исключать пользователя из группы.
    Вот несколько полезных для этого процедур:

    //Параметы:
    //Группа - строка вида: "\\ИмяДомена\ИмяГруппы"
    //Пользователь - строка вида: "\\ИмяДомена\ИмяПользователя"
    Процедура ДобавитьПользователяВГруппу(Группа, Пользователь)
        ГруппаАД = ПолучитьCOMОбъект("WinNT:"+СтрЗаменить(Группа, "\","/")+",Group");
        Попытка
            ГруппаАД.Add("WinNT:"+СтрЗаменить(Пользователь, "\","/")+",User");
        Исключение
            Инфо = ИнформацияОбОшибке();
            Если Инфо.Причина<>Неопределено Тогда
                Если Инфо.Причина.Описание="Произошла исключительная ситуация (0x800708bc)" Тогда
                    //Пользователь уже включен в данную группу.
                Иначе
                    ВызватьИсключение;
                КонецЕсли;
            КонецЕсли;
        КонецПопытки;
    КонецПроцедуры
    
    //Параметы:
    //Группа - строка вида: "\\ИмяДомена\ИмяГруппы"
    //Пользователь - строка вида: "\\ИмяДомена\ИмяПользователя"
    Процедура УдалитьПользователяИзГруппы(Группа, Пользователь)
        ГруппаАД = ПолучитьCOMОбъект("WinNT:"+СтрЗаменить(Группа, "\","/")+",Group");
            Попытка
                ГруппаАД.Remove("WinNT:"+СтрЗаменить(Пользователь, "\","/")+",User");
            Исключение
                Инфо = ИнформацияОбОшибке();
            Если Инфо.Причина<>Неопределено Тогда
                Если Инфо.Причина.Описание="Произошла исключительная ситуация (0x800708bd)" Тогда
                    //Пользователь не включен в данную группу.
                Иначе
                    ВызватьИсключение;
                КонецЕсли;
            КонецЕсли;
        КонецПопытки;
    КонецПроцедуры
    

    Пользователь, под которым запускается 1С:Предприятие должен обладать необходимыми правами для включения пользователей AD в группу AD.

    Приложения

    Пример внедрения технологии

    Исходные данные:
    - организация, имеющая локальный домен AD и 3 информационные базы 1С: Бухгалтерия, Зарплата, УчетАвтотранспорта;
    - работники организации используют русский и казахский языки.
    Решение:
    1. Создаются два msi файла 1С для русского и казахского языка: 1СV8ru.msi и 1СV8kz.msi используя скрипт MakeV8Distr.vbs, и размещаются в одном каталоге на файловом сервере организации, там же размещается файл Data1.cab из дистрибутива 1C, а также gp1cv8ib.msi.
    2. Создаются две группы AD для установки 1С:Предприятия: Setup1Cru и Setup1Ckz.
    3. Создаются два объекта ГП для установки 1С:Предприятия: Install1Cru и Install1Ckz с заданием в них соответствующих msi пакетов из (1) в разделе "Конфигурация компьютера / Конфигурация программ / Установка программ" и заданием области применения соответствующими группами из (2), также в каждый объект ГП добавляется установка GP1CV8IB (gp1cv8ib.msi).
    4. Компьютеры домена пользователей работающих с казахским языком включаются в группу Setup1Ckz, а компьютеры пользователей работающих с русским языком в группу Setup1Cru.
    5. Создаются три группы AD для регистрации информационных баз: IBbuh, IBzp, IBauto.
    6. Создаются три объекта ГП для регистрации информационных баз: RIBbuh, RIBzp, RIBauto с заданием в них параметров подключения к  соответствующим информационным базам в разделе "Конфигурация пользователя / Конфигурация программ / Информационные базы 1С", и заданием области применения соответствующими группами из (5).
    7. Пользователи домена включаются в те группы АD (IBbuh, IBzp, IBauto), информационные базы которых им необходимы для работы, в соответствии с требованиями организации.
    Таким образом управление списками информационных баз пользователей сводится к включению/исключению пользователей домена в/из групп AD.

    Возможные проблемы и способы решения

    При установке 1С:Предприятия на Windows XP при первой загрузке компьютера не начинается установка 1С:Предприятия. Это связано с тем, что эта ОС поддерживает асинхронную загрузку, по умолчанию она включена и при первой загрузке уже начался процесс асинхронной загрузки, а применение политики установки программ может происходить только синхронно. Поэтому установка произойдет только при следующей загрузке.

    Не устанавливается 1С:Предприятие через групповую политику на некоторых машинах где оно было установлено ранее (не обновляется). В системном журнале есть соответствующие записи. Это может быть связано с тем, что ранее установка выполнялась с ресурса который в данный момент недоступен. Инсталлер запоминает расположение дистрибутива для каждого продукта, и если он не доступен не может деинсталировать старую версию. Если бы инсталяция шла интерактивно инсталлер спросил бы пользователя о новом расположении старого дистрибутива. Возможные решения: удалить старую версию вручную или восстановить дистрибутив на старом расположении.

    От автора

    Готов принять помощь по локализации GP1CV8IB на другие языки.