+7 (812) 325 84 00

+7 (499) 322 07 96

Автоматизированное распространение клиента Lotus Notes с настроенной конфигурацией

1. Постановка задачи
Некоторое время назад пришлось выступить консультантом по решению достаточно специфической задачи.
Предприятие разворачивало корпоративную почтовую систему на базе IBM Domino 8. Рабочих мест – до 800, впоследствии Lotus предполагалось использовать также для организации документооборота. Парк рабочих станций был разношерстным, в большом количестве присутствовали системы еще Windows 2000 Professional, были также XP/Vista/7, как 32-, так и 64-разрядные.
В процессе установки Notes очень хотелось передать клиенту некоторые настройки – как минимум, параметры подключения к серверу Domino, чтобы не тратить время на указание параметров связи на каждом клиенте вручную. Помимо этого, нужно было разворачивать дистрибутив клиентской части только с определенным набором компонент, и обеспечивать SSO - синхронизацию пароля Notes ID с паролем работающего пользователя Windows, избавив его от необходимости помнить отдельный пароль в почтовый клиент, и вводить его каждый раз.
Служба каталогов AD была, системы управления конфигурациями и распространения ПО – как обычно, нет. Требовалось организовать автоматизированное развертывание клиента имеющимися средствами.
Определенная проблема возникала также из-за разнородности клиентских ОС (особенно порадовало наличие Windows 2000; предприятие, кстати, было режимным). Вендорская матрица совместимости клиентов Notes (http://www-01.ibm.com/support/docview.wss?rs=475&uid=swg27007909) гласит, что последняя совместимая с Windows 2000 версия клиента Notes – не старше 7.0.4, а актуальной для заказчика на момент установки была 8.5.2 (встает на Windows XP SP2 и старше). Поэтому, было принято решение создать набор настроенных пакетов для установки:
· Lotus Notes 7.0.4, русская версия (для Windows 2000);
· Lotus Notes 8.5.2 x86, русская версия (для 32 и 64-разрядных Windows XP/Vista/7);
Логика выбора конкретной версии пакета для установки на каждом клиенте я решил реализовывать универсальным скриптом.
Кроме того, на клиенты Lotus Notes 8.5.2 в процессе инсталляции хотелось сразу же ставить еще и пакет обновлений FixPack 2 (http://www-01.ibm.com/support/docview.wss?uid=swg24028680; кстати, механизм SSO на клиенте 8.5.2 без установленного FP на 64-битной системе не работает).  Для клиента Notes 7.0.4 FixPack’ов не имелось.

2. Настройка пакетов
Для настройки пакетов unattended-установки клиента Notes служит утилита InstallShield Tuner. Сам процесс настройки очень подробно описан в пошаговом руководстве “The great Lotus Notes installation guide” (http://www.lotus-expert.com/en/articles/sntt-customize-client-installation.html), переписывать его не буду. Скажу только, что, для моей задачи, мне хватило следующих разделов:

· Preparations (страница A) – для подготовки дистрибутива. В качестве настроечной станции для запуска InstallShield Tuner я использовал виртуальную машину с русской версией Windows 7 Enterprise SP1 x86, никаких проблем не возникло. Замечание из предыдущего опыта – для настройки пакетов установки локализованных версий клиента Notes, всегда лучше использовать установку ОС соответствующей локали, иначе впоследствии, при развертывании пакета на целевых системах, возможны проблемы с кодировкой. В частности, я сталкивался с тем, что названия служб Notes в операционной системе в этом случае регистрировались “крякозябрами”.
JDK мне не понадобился;

· Changing the Installation Features (страница 5) – здесь необходимо выбрать компоненты для установки в составе клиента. В моем случае достаточно было стандартного набора без офисной части, клиент Sametime также не был нужен;

· Adding Notes. ini Options (страница 6) – здесь задается возможность передачи собственных параметров в файл notes. ini настройки клиента (см. ниже страницу 8, Scriptable setup). Поэтому, важный момент - необходимо установить параметр VDIR_INI, как описано в руководстве;

· Multi- user vs. single- user installation (страница 7) – в корпоративном окружении, в доменной среде используем вариант multi-user. В этом случае все настройки клиента хранятся в профиле пользователя Windows;

· Scriptable setup, страница 8. Здесь создается INI-файл с теми настройками, которые при установке отображаются в конфигурационный файл notes. ini. В частности, таким образом можно передать клиенту параметры подключения к серверу Domino, так, чтобы при первом запуске клиента никакие данные, кроме ID-файла не запрашивались. Это сильно минимизирует риск ошибок при начальной настройке.
Для автоматизации подключения к серверу почты (без IM), опций Domino. Port, Domino. Name, Domino. Server, AdditionalServices и AdditionalServices. NetworkDial минимально достаточно. Поэтому у меня получился такой файл company_notes.cfg, размещаемый в подкаталоге plugins кастомизированного пакета:

Domino.Port=TCPIP
Domino.Name=CM01/FGUP
Domino.Server=1
AdditionalServices=-1
AdditionalServices.NetworkDial=0
Нужно понимать, что для того, чтобы это заработало правильно, необходимо обеспечить корректную работу механизмов разрешения имен Notes поверх TCP/IP. Иначе может получиться так, что при первом запуске клиента документ соединения (connection document) будет создан неверно, и это потом придется исправлять на каждом клиенте вручную. О разрешении имен необходимо позаботиться заранее;

· Use the .mst (страница 13). Здесь приводится командная строка, которая применяет созданный файл преобразований (transform) к установочному пакету. Она нам понадобится при создании скрипта установки (см. ниже). То есть, мне нужен вариант 13. I. A ( Batch files).
Больше никакие разделы из данного руководства мне не понадобились. Installshield Tuner необходимо использовать для обоих пакетов (7.0.4 и 8.5.2). На выходе получаем по одному MST (transform) для каждого пакета, вся логика настройки стандартного дистрибутива содержится в них.

Для справки несколько дополнительных ссылок:

В результате сборки, у меня получилась следующая структура пакетов, размещаемая на сетевом дистрибутивном ресурсе в домене AD (под корнем \\SERVERNAME\Distr):

· Distr\Notes\7.0.4 – дистрибутив клиента Notes 7.0.4 (включая MST-файл);
· Distr\Notes\8.5.2 – дистрибутив клиента Notes 8.5.2 (включая MST-файл);
· Distr\Notes\8.5.2.FP2 – дистрибутив Notes 8.5.2 FixPack 2;
· Distr\Notes\Shortcuts\7.0.4 – ярлыки клиента Notes 7.0.4;
· Distr\Notes\Shortcuts\8.5.2\x86 – ярлыки клиента Notes 8.5.2 для 32-разрядной ОС;
· Distr\Notes\Shortcuts\8.5.2\x64 – ярлыки клиента Notes 8.5.2 для 64-разрядной ОС.

3. Универсальный VBS -скрипт установки
Скрипт можно загрузить из приложения (файл Install.7z), и при необходимости адаптировать. Хотелось бы сделать несколько замечаний:
· Разрядность ОС (логика введена для копирования ярлыков) определяется по системной переменной PROCESSOR_ARCHITECTURE, а версия ОС – по выводу встроенной команды ver командного интерпретатора cmd. exe;
· Скрипт определяет наличие клиента Notes на целевой системе по присутствию файла notes. exe в соответствующем каталоге. Если файл обнаружен, ничего не делается;
· Опытным путем установлено, что при подобной инсталляции (скриптом, запускаемым с правами системы из объекта групповой политики AD, в сочетании с пакетом клиента Notes для автоматизированной установки), операция установки проходит отлично, но, почему-то, в профилях пользователей не создаются ярлыки для программ. Поэтому я просто подготовил отдельные наборы эталонных ярлыков (файл Shortcuts.7z) для клиентов Notes 7 и 8, для x86 и x64-систем, для “Главного меню” и “Рабочего стола”, и по завершении операции установки копировал их явно командой xcopy в необходимые каталоги. Метод оказался вполне рабочим, никаких проблем не возникло;
· В процессе установки (асинхронной), хотелось оповестить работающего пользователя о выполняемой процедуре и предстоящей перезагрузке. Еще в Windows 2000 для этого существовала утилита msg. exe (выдает всплывающее сообщение на консоль), однако, здесь применен другой подход – для Windows 2000, из системы Windows XP SP3 взята утилита shutdown. exe, которая, по завершении установки, в случае, если нужна перезагрузка, выдает на пользовательский экран модальное окно о завершении работы системы, и инициирует перезапуск через 2 минуты. Перезагрузка же необходима для того, чтобы заработала служба единого входа в Lotus Notes клиент (SSO).
В Windows XP и позже утилита shutdown. exe есть штатно.
Соответствующие команды в скрипте такие:

RestartCmd = "shutdown.exe -r -f -t 120 -c " & Chr(34) & "Система будет перезагружена, приготовьтесь к завершению работы!" & Chr(34)
objShell.Run RestartCmd,0,FALSE

· Операция установки 8.5.2 FixPack 2 для Windows 2000 не нужна, так как для этой ОС устанавливается более старый клиент;
· Чтобы скрипт не был “черным ящиком”, введено простое протоколирование операций установки в текстовый файл на каждой системе во временный каталог (в файл %TEMP%\runresult.tmp). Это позволяет отследить, что именно происходило, если что-то пошло не так. Выглядит лог примерно так (вариант успешной установки клиента 8.5.2):

ЛОГ СКРИПТОВОЙ УСТАНОВКИ NOTES
13.12.2012 17:52:52
Инициализация скрипта установки...
Обнаружена операционная система Windows Vista и выше
Система имеет 64-разрядную архитектуру, путь установки Notes C:\Program Files (x86)\IBM\Lotus\Notes\notes.exe
Попытка установки клиента версии 8.5.2.
13.12.2012 18:03:05
Установщик вернул код 0
Попытка установки 8.5.2 Fixpack 2.
13.12.2012 18:06:23
Установщик вернул код 0
Путь общего пользовательского профиля C:\ProgramData
Копируем ярлыки главного меню в C:\ProgramData\Microsoft\Windows\Start Menu\Programs
xcopy "\\DM1-DC01\Distr\Notes\Shortcuts\8.5.2\x64\Lotus Applications" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Lotus Applications" /E /I /R /Y
Копирование вернуло код 0
Копируем ярлыки рабочего стола в C:\ProgramData\Desktop
xcopy "\\DM1-DC01\Distr\Notes\Shortcuts\8.5.2\x64\Lotus Notes 8.5.lnk" "C:\ProgramData\Desktop" /R /Y
Копирование вернуло код 0
Инициирована перезагрузка системы.
Скрипт завершен.
13.12.2012 18:06:28

Все имена серверов и организации в скрипте и примере конфигурации, конечно, изменены.

4. Замечания по установке клиента Notes
По завершении установки, однократный визит на каждую рабочую станцию все-таки нужен – для того, чтобы выдать пользователю его ID-файл с начальным паролем (который потом синхронизируется с паролем Windows). ID-файлы для каждого пользователя нужно предварительно подготовить, это стандартная задача администратора Domino. Но, в любом случае, предоставление Notes клиенту ID-файла – простая операция, занимающая минимум времени, а все остальное автоматизировано.
Дальнейшие настройки Notes клиента (после подключения к предварительно сконфигурированному серверу) можно выполнять уже с помощью политик Domino. В частности, можно задать список доступных баз данных на рабочей области Notes клиента.
Клиенты Lotus Notes от версии к версии, в сущности, меняются мало, поэтому, уверен, эта методика установки будет актуальной еще долгое время.

5. Групповая политика AD
Здесь реализация стандартная. Скрипт назначается как стартовый на контейнер Computer Configuration объекта групповой политики. Дополнительно, так как установка занимает достаточно длительное время, в ветви административных шаблонов (Computer Configuration\ Policies\Administrative Templates\System\Scripts) устанавливается два параметра:
· Maximum wait time for Group Policy ScriptsEnabled, 0 (значение 0 означает, что скрипт не будет прерван принудительно, и расширение Script CSE на клиентской стороне в любом случае дождется его завершения);
· Run startup scripts asynchronously  – Enabled , задает выполнение скрипта в фоновом режиме (асинхронно по отношению к процедуре входа в систему):


GPO Script Settings.jpg

Ну и традиционное замечание: групповая политика установки применяется при следующей перезагрузке целевой рабочей станции; дабы избежать падения производительности сети и сервера с дистрибутивом, крайне рекомендуется создать специальную группу безопасности в AD, и включать в нее целевые учетные записи компьютеров поэтапно, используя для созданных групповых политик фильтрацию по ACE “Apply Group Policy” (опция Security Filtering консоли GPMC) для этой группы.

Shortcuts.7z ( 4.15 КБ) Install.7z ( 2.67 КБ)