Установка 1С 8.3 в корпоративной среде при помощи групповых политик


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

Итак, какие же способы развертывания своего софта нам предлагает 1с?

1. Установка с помощью logon-скрипта

2. Установка путем размещения в общем сетевом каталоге

3. Установка с помощью групповых политик

Первые два способа мы отвергаем, т.к. в данной статье рассмотрим именно установку с помощью групповых политик (GPO).

Информация на страницах 1С:ИТС,   которую нам предлагает производитель о  развертывании своего продукта при помощи групповых политик, весьма скупа:

При установке через групповые политики для указания языка установки нужно указывать соответствующий языковой файл трансформации. Имена файлов соответствуют десятичному представлению LCID Microsoft Windows (с расширением .mst). Файл трансформации для русского языка называется 1049.mst.

Кроме этого, дополнительно нужно указать файл трансформации adminstallrestart.mst. В этом случае система «1С:Предприятие» при несовпадении версий клиента и сервера будет предлагать перезагрузку компьютера для установки новой версии. Администратор должен позаботиться, чтобы новый дистрибутив уже был добавлен в групповых политиках.

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

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

1049.mst – очевидна, а о adminstallrestart.mst не слишком полезна. Поэтому мы создадим свой файл трансформации. 
В первую очередь хотелось бы понять, как можно указать установщику, какие компоненты продукта мы хотим установить, а какие – нет? Не смотря на то, что документация от 1c в основном достаточно обширна и подробна, об этом почему-то не говориться ни слова. Но выйти из положения нам поможет logon-скрипт, который мы отвергли в самом начале. В скрипте мы можем увидеть следующие строки:

cmdLine = cmdLine & " DESIGNERALLCLIENTS=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU"

Где:
DESIGNERALLCLIENTS – все клиенты и конфигуратор.
THINCLIENT – тонкий клиент для клиент-серверного варианта работы.
THINCLIENTFILE – тонкий клиент с возможностью работы с файловыми информационными базами.
SERVER – сервер «1С:Предприятия». Если программа установки запускается из программы запуска, то сервер будет установлен как приложение.
WEBSERVEREXT – компоненты расширения для веб-сервера.
CONFREPOSSERVER – сервер хранилища конфигураций «1С:Предприятия».
SERVERCLIENT – компоненты для администрирования кластера серверов «1С:Предприятия».
CONVERTER77 – конвертер информационных баз из версии «1С:Предприятия 7.7».
LANGUAGES – список языков интерфейса для установки. Если указано несколько языков, они перечисляются через «,».

В этой строке скрипта формируется командная строка , которая будет передана на обработку установщику msiexec.

Чтобы создать файл трансформации, нам потребуется редактор «Orca».  (http://www.technipages.com/download-orca-msi-editor)
И так, после установки запускаем программу. “Файл” – “Открыть”, и выбираем “1CEnterprise 8.msi” из дистрибутива 1С. В левой части программы появился список таблиц, в правой значения таблиц. Т.к. сам 1С не рекомендует менять msi-пакет, поэтому идем в меню “Transform” – “New Transform”.

Необходимо перейти к таблице “Property”. В правой части ищем строку “DEFLANGUAGE”, со значением “Auto”. Значение необходимо поменять на “RU” (Без кавычек конечно).

Для большинства пользователей необходимо установить минимум компонентов, это Тонкий клиент, Толстый клиент, и язык (например русский)
Поэтому создадим новые поля (Ctrl+R), где нужно указать имя и значение.
DESIGNERALLCLIENTS  = 1
THINCLIENT = 1
THINCLIENTFILE = 1
SERVER = 0
WEBSERVEREXT = 0
CONFREPOSSERVER = 0
SERVERCLIENT = 0
CONVERTER77 = 0
LANGUAGES = RU

Т.е. Должно получится как на картинках:

Далее идем в меню “Transform” – “Generate Transform…”. Сохраняем файл, можно в папку с дистрибутивом, например Client.mst
На этом генерация файла трансформации закончена.
Чтобы проверить установку, необходимо открыть программу “cmd”. Перейти в папку с дистрибутивом. И выполнить команду: 
setup.exe /S TRANSFORMS=Client.mst TRANSFORMS =1049.mst 
или 
msiexec /i "<каталог с дистрибутивом >" TRANSFORMS="<каталог с дистрибутивом >" Client.mst TRANSFORMS="<каталог с дистрибутивом >" 1049.mst /passive

В первой команде параметр “/S” и во второй команде параметр “/passive” означает, что установка будет проходить в фоновом режиме.

После некоторого времени можно проверять. Должно установиться Толстый клиент, Тонкий клиент и русский интерфейс.

Далее нужно создать новую установку в групповых политиках домена.
Так же нужно создать общий каталог в вашей сети, где будут хранится установочные файлы. Проверить чтобы пользователи домена имели права чтения из этого каталога.
Открываем редактор GP. Создаем новую политику. Открываем её для редактирования. Переходим в раздел «Конфигурация компьютера» — «Установка программ».

Создаем новый пакет. Выбираем файл 1CEnterprise 8.2.msi, путь до файла необходимо указывать через сетевое окружение \SRV…..1CEnterprise 8.msi, метод развертывания выбираем — особый, для того чтобы можно было внести модификации.

После создания пакета откроется окно свойств пакета.
Необходимо перейти на закладку «Модификации»  и добавить файл трансформации для русского языка называется 1049.mst и файл трансформации Client.mst.

После того как нажмете «ОК» файлы модификации добавить будет не возможно.
Пакет готов. Стоит отметить, что пакет необходимо применять на группу компьютеров, для этого в AD необходимо создать такую группу и поместить туда компьютеры, для которых предполагается установка.
 

26 Comments

  1. smilebringer

    Проверить чтобы пользователи домена имели права чтения из этого каталога (с).

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

    Reply
  2. Dragonim

    Моя практика работы показала, что установка через logon-скрипт быстрее и проще. Всё упирается в сложность обновления платформы на сервере, а следовательно на клиентских компьютерах.

    1. logon-скрипт позволяет удалять старые версии 1С Предприятия, в отличии от групповой политики.

    2. Для работы logon-скрипта в нём необходимо поменять 4 стоки, уникальный код устанавливаемой конфигурации + путь до неё, и уникальный код удаляемой версии + путь до неё, а в случае с групповой политикой вам каждый раз придется проделывать всё описанное в статье.

    3. Если руки растут из плеч, то можно доработать logon-скрипт для необходимого вам логирования, в групповой политики результаты выполнения пушиться в журнал событий, что не всегда удобно.

    Самый главный плюс: скрипт можно запустить в любое время (несмотря на то что он называется logon-скрипт) что позволяет обновлять платформу на клиенте без перезагрузки и дополнительных указаний пользователю что и как делать.

    Reply
  3. Trucker

    (2) Dragonim, а как быть, если у пользователя нет прав локального админа?

    Reply
  4. Danila-Master

    (4) Dragonim, Может тогда напишите свою подробную инструкцию, можно с картинками. Было бы очень полезно.

    Reply
  5. Dragonim

    (3) Дистрибутивы 1С Предприятия и сам logon-скрипт кладётся в сетевую папку с правами доступа для компьютеров рабочей группы (в самом простом случае у папки должны быть права доступа на чтение и выполнение для группы «Компьютеры домена»). В групповой политики прописывается запуск скрипта при загрузки или выключения компьютера, поэтому название logon-скрипт верно только в названии «скрипт» к «logon» он ни какого отношения не имеется т.к. в групповой политике под logon подразумевается вход пользователя под своей учётной записью, а запуск компьютера это startup.

    Reply
  6. zelevova

    Поддерживаю. Было бы интересно увидеть логон(стартап) скрипты не требующие у пользователей админских прав.

    Reply
  7. нормальный такой
    1. Установка с помощью logon-скрипта

    2. Установка, путем размещения в общем сетевом каталоге

    3. Установка с помощью групповых политик

    Первые два способа мы отвергаем, т.к. в данную статью рассмотрим именно установку с помощью групповых политик (GPO).

    хорошее объяснение, очень объективное и сразу всё понятно. дайтедве!

    Reply
  8. h00k

    (5)Danila-Master

    достаточно подробно описано и в желтых книжках, и на итс, и даже обработка для генерации логон-скрипта опубликована.

    Reply
  9. SkorikA

    (2)

    1. logon-скрипт позволяет удалять старые версии 1С Предприятия, в отличии от групповой политики.

    А откуда заблуждение что GPO этого не позволяют сделать? Достаточно лишь правильно настроить саму политику…

    (7)Не скажу чем руководствовался автор, но для меня причины были следующие:

    1. Не нужно давать права пользователю. И так хватает проблем с шибко умнымипродвинутыми пользователями и их portable софтом.

    2. Политика отдела IT: весь софт устанавливается через соответствующие политики, а политики распространяются на весь лес.

    Reply
  10. Dragonim

    (5) (6) zelevova, по просьбам страждущих написал http://infostart.ru/public/299829/

    Reply
  11. Puk2

    Кто-нибудь сталкивался с проблемой не установки компоненты 1С:Предприятие (конфигуратор и толстый клиент) через групповые политики? Устанавливали версии 8.2 с указанием собственного mst файла, где указаны компоненты (всё кроме серверных), устанавливалось всё корректно, но криво удалялось (оставались в списке установленных программ).

    Версия 8.3.5.1068 установилась и удалилась нормально, а в версии 8.3.5.1119 у многих (не у всех) установилась без компоненты 1С:Предприятие (конфигуратор и толстый клиент). Удаление всех версий с компьютера клиента и переприменение политики установки не помогает.

    Reply
  12. EugeneBespalov

    ошибка в тексте

    msiexec /i «<каталог с дистрибутивом >» TRANSFORMS=»<каталог с дистрибутивом >» Client.mst TRANSFORMS=»<каталог с дистрибутивом >» 1049.mst /passive

    понимать как

    msiexec /i «<путь+имя_MSI_файла_установки>» TRANSFORMS=»<каталог с дистрибутивом >» Client.mst TRANSFORMS=»<каталог с дистрибутивом >» 1049.mst /passive

    где

    <путь+имя_MSI_файла_установки>, например равен d:inst1c8.3.5.12311CEnterprise 8.msi

    Reply
  13. cool.vlad4

    (2) Dragonim,

    а в случае с групповой политикой вам каждый раз придется проделывать всё описанное в статье.

    можно все описанное в статье автоматизировать. если orca может добавлять, то чем мы хуже? msi это такая БД. можно написать либо скрипт на vbs, powershell, на чем угодно и использовать COM объект «WindowsInstaller.Installer» // Можно еще посмотреть http://msdn.microsoft.com/en-us/library/aa372865(v=vs.85).aspx

    либо напрямую использовать msi.dll . например через pinvoke http://community.bartdesmet.net/blogs/bart/archive/2008/06/06/linq-to-msi-part-0-introduction.aspx . Я попробовал второй вариант. Но было довольно лениво все доводить до ума и я вспомнил про Wix. Так что на C# задача сильно упрощается, все что нужно это

    using WixToolset.Dtf.WindowsInstaller;
    using WixToolset.Dtf.WindowsInstaller.Linq;

    ну а в файлах теста можно посмотреть примеры использования

    string parameterFormatString = «[1]»;
    string[] properties = new string[]
    {
    «SonGoku», «Over 9000»,  //Здесь наше property и его значение
    };
    
    string query = «SELECT `Property`, `Value` FROM `Property`»;
    
    using (View view = db.OpenView(query))
    {
    using (Record rec = new Record(2))
    {
    rec[1] = properties[0];
    rec[2] = properties[1];
    rec.FormatString = parameterFormatString;
    Console.WriteLine(«Format String before inserting: » + rec.FormatString);
    view.Insert(rec);
    
    Console.WriteLine(«Format String after inserting: » + rec.FormatString);
    // After inserting, the format string is invalid.
    
    // Setting the format string manually makes it valid again.
    rec.FormatString = parameterFormatString;
    
    }
    }

    Показать

    https://github.com/wixtoolset/

    Reply
  14. cool.vlad4

    черт, разметка ис-а поломала код, но не важно, на гитхабе можно посмотреть

    Reply
  15. OrsoBear

    Спасибо за описанные методы.

    Однако столкнулся с проблемой.

    Под администратором терминально устанавливаю на 2008 сервере 32х битную 1С 8.3

    До этого работала 1С 8.2 и запускалась.

    После установки у меня, и у других администраторов сервера 1с 8.3 запускается.

    У остальных пользователей 1С мигает на несколько секунд, и больше никакой активности не наблюдается.

    Если удалить 1С 8.3, снова начинает работать.

    Если почистить папки Application Data и Local Settings Application Data

    перестает работать и 1С 8.2

    В чем может быть причина?

    Или в этой ветке обсуждаются только способы установки?

    Reply
  16. salikoff

    В последних версиях платформы появился новый пункт — «Контроль целостности». Как узнать имя параметра, отвечающего за него?

    Reply
  17. bagr

    Можно ли установить 1С через групповые политики в каталог, отличный от каталога по-умолчанию c:Program Files ? Например, я хочу поставить в c:Prog1С

    Reply
  18. Alteza

    8.3.6 почемуто несмотря на параметры ставится английская и все что можно и сервер и тд. почему?

    Reply
  19. KAV2

    Коллеги, подскажите пожалуйста, а если надо сделать все тоже самое, но чтобы два языка ставилось?

    Reply
  20. user858448

    (12)

    Но работает так:

    msiexec /i «<путь>1CEnterprise 8.msi» TRANSFORMS=Client.mst TRANSFORMS=1049.mst /passive

    Reply
  21. mykmykpet

    (9)

    Не нужно давать права пользователю. И так хватает проблем с шибко умнымипродвинутыми пользователями и их portable софтом.

    Так это же решается с помощью политики ограниченного использования программ

    Reply
  22. mykmykpet

    (19)

    LANGUAGES – список языков интерфейса для установки. Если указано несколько языков, они перечисляются через «,».

    RU,EN

    Reply
  23. KAV2

    (22) Спасибо!

    Reply
  24. JustGoForward

    Использование параметра TRANSFORMS более одного раза недопустимо! Если вы укажете этот параметр несколько раз, то применится только последнее значение.

    Надо указывать список файлов трансформации через символ «;» в том порядке в котором они должны перезаписывать значения предыдущих:

    … TRANSFORMS=Client.mst;1049.mst …

    Здесь 1049.mst перезапишет настройки Client.mst в случае конфликта.

    Подробнее: TRANSFORMS property

    Корректно будет так:

    «<каталог с дистрибутивом>setup.exe» /S TRANSFORMS=Client.mst;1049.mst
    msiexec /i «<каталог с дистрибутивом>1CEnterprise 8.msi» TRANSFORMS=Client.mst;1049.mst /passive
    Reply
  25. user1170083

    В методе что описан в данной статье остается открытый вопрос. Как распространить список баз для пользователей? Если делать установки не через GPO, а через сетевой каталог, то в *.cfg можно указать файл с которого читать список баз *.v8i. А как реализовать это в домене при использовании метода GPO? Потребуется по сути через домен каким-то образом заставить принудительно прочитать с заменой заранее подготовленный файл в %username%appdata
    oaming1cv8ibases.v8i либо считать данный файл через GPO в сетевом каталоге.

    Reply
  26. PerlAmutor

    (11) Столкнулись с похожей проблемой. На чистые компьютеры все компоненты ставятся, а там где был установлен только Тонкий клиент доустановить Толстый не выходит через инструкцию в этой статье. Как будто ключи игнорируются. Удалось как-то решить?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *