gifts2017

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

Опубликовал Danil (Danila-Master) в раздел Администрирование - Системное

В данной статье я расскажу как установить 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 необходимо создать такую группу и поместить туда компьютеры, для которых предполагается установка.

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Михаил Чернышев (smilebringer) 14.08.14 17:19
Проверить чтобы пользователи домена имели права чтения из этого каталога (с).

Права на чтение должны быть не у пользователей, а у компьютеров пользователей. Так как групповая политика установка программ выполняется от имени компьютера, до загрузки окна авторизации пользователя
2. Dim Dragonim (Dragonim) 20.08.14 06:09
Моя практика работы показала, что установка через logon-скрипт быстрее и проще. Всё упирается в сложность обновления платформы на сервере, а следовательно на клиентских компьютерах.
1. logon-скрипт позволяет удалять старые версии 1С Предприятия, в отличии от групповой политики.
2. Для работы logon-скрипта в нём необходимо поменять 4 стоки, уникальный код устанавливаемой конфигурации + путь до неё, и уникальный код удаляемой версии + путь до неё, а в случае с групповой политикой вам каждый раз придется проделывать всё описанное в статье.
3. Если руки растут из плеч, то можно доработать logon-скрипт для необходимого вам логирования, в групповой политики результаты выполнения пушиться в журнал событий, что не всегда удобно.

Самый главный плюс: скрипт можно запустить в любое время (несмотря на то что он называется logon-скрипт) что позволяет обновлять платформу на клиенте без перезагрузки и дополнительных указаний пользователю что и как делать.
3. Trucker (Trucker) 20.08.14 09:23
(2) Dragonim, а как быть, если у пользователя нет прав локального админа?
4. Dim Dragonim (Dragonim) 20.08.14 09:56
(3) Дистрибутивы 1С Предприятия и сам logon-скрипт кладётся в сетевую папку с правами доступа для компьютеров рабочей группы (в самом простом случае у папки должны быть права доступа на чтение и выполнение для группы "Компьютеры домена"). В групповой политики прописывается запуск скрипта при загрузки или выключения компьютера, поэтому название logon-скрипт верно только в названии "скрипт" к "logon" он ни какого отношения не имеется т.к. в групповой политике под logon подразумевается вход пользователя под своей учётной записью, а запуск компьютера это startup.
5. Danil (Danila-Master) 20.08.14 09:39
(4) Dragonim, Может тогда напишите свою подробную инструкцию, можно с картинками. Было бы очень полезно.
6. Владимир Зеленов (zelevova) 20.08.14 14:37
Поддерживаю. Было бы интересно увидеть логон(стартап) скрипты не требующие у пользователей админских прав.
7. artur rakhmatulin (нормальный такой) 21.08.14 16:56
1. Установка с помощью logon-скрипта

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

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

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


хорошее объяснение, очень объективное и сразу всё понятно. дайтедве!
8. Андрей (h00k) 21.08.14 18:09
(5)Danila-Master
достаточно подробно описано и в желтых книжках, и на итс, и даже обработка для генерации логон-скрипта опубликована.
9. Andre Skorik (SkorikA) 27.08.14 02:02
(2)
1. logon-скрипт позволяет удалять старые версии 1С Предприятия, в отличии от групповой политики.

А откуда заблуждение что GPO этого не позволяют сделать? Достаточно лишь правильно настроить саму политику...
(7)Не скажу чем руководствовался автор, но для меня причины были следующие:
1. Не нужно давать права пользователю. И так хватает проблем с шибко умнымипродвинутыми пользователями и их portable софтом.
2. Политика отдела IT: весь софт устанавливается через соответствующие политики, а политики распространяются на весь лес.
GreenDragon; vshish; +2 Ответить
10. Dim Dragonim (Dragonim) 01.09.14 09:38
(5) Danila-Master, (6) zelevova, по просьбам страждущих написал http://infostart.ru/public/299829/
11. Nick (Puk2) 05.09.14 11:54
Кто-нибудь сталкивался с проблемой не установки компоненты 1С:Предприятие (конфигуратор и толстый клиент) через групповые политики? Устанавливали версии 8.2 с указанием собственного mst файла, где указаны компоненты (всё кроме серверных), устанавливалось всё корректно, но криво удалялось (оставались в списке установленных программ).
Версия 8.3.5.1068 установилась и удалилась нормально, а в версии 8.3.5.1119 у многих (не у всех) установилась без компоненты 1С:Предприятие (конфигуратор и толстый клиент). Удаление всех версий с компьютера клиента и переприменение политики установки не помогает.
12. Евгений Беспалов (EugeneBespalov) 22.10.14 12:24
ошибка в тексте

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

понимать как

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

где
<путь+имя_MSI_файла_установки>, например равен d:\inst\1c\8.3.5.1231\1CEnterprise 8.msi
13. Ийон Тихий (cool.vlad4) 03.11.14 19:25
(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/
14. Ийон Тихий (cool.vlad4) 03.11.14 19:26
черт, разметка ис-а поломала код, но не важно, на гитхабе можно посмотреть
15. Alex Steiner (OrsoBear) 12.01.15 10:45
Спасибо за описанные методы.
Однако столкнулся с проблемой.
Под администратором терминально устанавливаю на 2008 сервере 32х битную 1С 8.3
До этого работала 1С 8.2 и запускалась.
После установки у меня, и у других администраторов сервера 1с 8.3 запускается.
У остальных пользователей 1С мигает на несколько секунд, и больше никакой активности не наблюдается.
Если удалить 1С 8.3, снова начинает работать.
Если почистить папки Application Data и Local Settings\ Application Data
перестает работать и 1С 8.2

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

Или в этой ветке обсуждаются только способы установки?
16. Сергей Саликов (salikoff) 13.08.15 12:55
В последних версиях платформы появился новый пункт — «Контроль целостности». Как узнать имя параметра, отвечающего за него?
17. Михаил Андреев (bagr) 15.10.15 12:23
Можно ли установить 1С через групповые политики в каталог, отличный от каталога по-умолчанию c:\Program Files\ ? Например, я хочу поставить в c:\Prog1С\
18. Alex Smol (Alteza) 10.02.16 10:51
8.3.6 почемуто несмотря на параметры ставится английская и все что можно и сервер и тд. почему?