26 января 2014 г.

Административная установка 1С:Предприятие 8.2 ч.2. Logon-скрипт.

Вот и вторая часть рассуждения на тему установки платформы “1С:Предприятие 8.2” в корпоративной сети.


Способ 2: Административная установка платформы “1С:Предприятие 8.2” при помощи logon-скрипта.

В официальном руководстве администратора по системе с1С:Предприятие 8.2” фирма “1С” предлагает в качестве одного из вариантов установки платформы воспользоваться logon-скриптом и приводит листинг такого скрипта. К сожалению как оказалось в дальнейшем, приведенный в руководстве скрипт не работоспособен и на дисках ИТС был опубликован новый скрипт, на его примере я и разберу процесс такой установки платформы “1С:Предприятие 8”.
Скрипт
Option Explicit
Const msiUILevelNoChange = 1        ‘Не изменять интерфейс пользователя
Const msiUILevelDefault = 1         ‘Использовать интерфейс пользователя, заданный по умолчанию
Const msiUILevelNone = 2            ‘Не отображать интерфейс пользователя (молчаливая установка)
Const msiUILevelBasic = 3           ‘Только индикатор прогресса и отображение ошибок
Const msiUILevelReduced = 4         ‘Интерфейс пользователя без диалоговых сообщений
Const msiUILevelFull = 5            ‘Полный интерфейс пользователя
Const msiUILevelHideCancel = 32     ‘Если используется с msiUILevelBasic, то отображается индикатор прогресса без кнопки Cancel
Const msiUILevelProgressOnly = 64   ‘Если используется с msiUILevelBasic, то отображается индикатор прогресса без тображения любых диалогов, в т.ч. и ошибок.
Const msiUILevelEndDialog = 128     ‘Если используется с любым из перечисленных значений, интсталятор выводит сообщение в конце установки о конечном результате.
‘***** Необходимо изменить на реальный каталог установки
Const DistrFolder=“\\SBS\1CEDistr\”
Const shortcutName = “Запуск 1C Предприятия”
Dim shortcutTarget : shortcutTarget = DistrFolder & «1cestart.exe»
‘Константы для определения действия
Const requiredInstall = 1   ‘ требуется установка
Const requiredUninstall = 0 ‘ требуется удаление
‘Значение параметра ProductCode из файла setup.ini …
‘… для удаляемой версии
Const unInstallUID= “{28DA00AC-C5D5-4871-A36A-CFC417738200}”
‘… для устанавливаемой версии
Const InstallUID= “{A5AA34A4-A3BE-4D2B-AFCA-464333144C27}”
‘удалим версию
installOrUninstall unInstallUID, DistrFolder + «8.2.12.87\1CEnterprise 8.2.msi», «1049.mst», «adminstallrestart.mst», requiredUninstall
‘установим версию
installOrUninstall InstallUID, DistrFolder + «8.2.12.92\1CEnterprise 8.2.msi», «1049.mst», «adminstallrestart.mst», requiredInstall
‘процедура установки или удаления указанной версии продукта
Sub installOrUninstall (ByVal productCode, ByVal msiPackage, ByVal mstTransform, ByVal mstinstall, ByVal requiredAction)
‘productCode – Информация о коде продукта. Находится в файле setup.ini, ключ ProductCode
‘msiPackage – Установочный пакет 1CEnterprise
‘mstTransform – файл языкового преобразования для инсталлятора
‘requiredAction – требуемое действте requiredInstall или requiredUninstall
‘Переменная, для формирования дополнительных параметров инсталлятору
Dim cmdLine
On Error Resume Next
Dim installer, session
Set installer = Nothing
Set session = Nothing
Set installer = Wscript.CreateObject(«WindowsInstaller.Installer») : processError
installer.UILevel = msiUILevelBasic ‘msiUILevelNone ‘или укажите другой вариант интерфейса пользователя
‘проверка установки продукта
Set session = installer.OpenProduct(productCode)
If session Is Nothing AND requiredAction = requiredInstall Then
‘продукт не установлен и требуется его установка
cmdLine = «TRANSFORMS=adminstallrestart.mst;»
If Not mstTransform Is Empty Then
‘добавим указание инсталлятору разговаривать на указанном языке
cmdLine = cmdLine & mstTransform
‘можно дополнительно указать, какие компоненты нужно установить
cmdLine = cmdLine &  “THICKCLIENT=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU”
End If
‘установим платформу
Set session = installer.InstallProduct(msiPackage, cmdLine) : processError
‘создадим ярлык на рабочем столе
‘createShurtcut()
ElseIf Not session Is Nothing AND requiredAction = requiredUninstall Then
‘платформа уже установлена и требуется ее удаление
‘обьект session может быть только один!
Set session = Nothing
‘укажем, что нужно удалить с компьютера пользователя эту версию
cmdLine = «REMOVE=ALL»
‘удалим
Set session = installer.InstallProduct(msiPackage, cmdLine) : processError
End If
Set session = Nothing
Set installer = Nothing
End Sub
‘обработка ошибок
Sub processError
Dim msg
If Err = 0 Then Exit Sub
msg = Str(Err.Number) & Err.Source & “ ” & Hex(Err) & “: ” & Err.Description
Wscript.Echo msg
MsgBox(msg)
‘Wscript.Quit 2
‘End Sub
‘создание ярлыка
Sub createShurtcut
Dim WshShell, oShellLink
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Dim strDesktop : strDesktop = WshShell.SpecialFolders(«Desktop»)
Set oShellLink = WshShell.CreateShortcut(strDesktop & «\» & shortcutName & «.lnk»)
oShellLink.TargetPath = shortcutTarget
oShellLink.WindowStyle = 1
oShellLink.Description = shortcutName
oShellLink.Save
Set oShellLink = Nothing
Set WshShell = Nothing
End Sub
Итак, что в данном скрипте необходимо менять:
  1. Путь к общедоступному каталогу с дистрибутивами настроенному аналогично методу описанному в ч.1:
    Const DistrFolder=“\\Server\1CEDistr\
  2. Название ярлыка программы запуска:
    Const shortcutName = “Запуск 1C Предприятия
  3. Значение параметра ProductCode из файла setup.ini
    для удаляемой версии платформы:
    Const unInstallUID= “{28DA00AC-C5D5-4871-A36A-CFC417738200}”для устанавливаемой версии платформы:
    Const InstallUID= “{A5AA34A4-A3BE-4D2B-AFCA-464333144C27}”
  4. Соответствующие номера версий удаляемой и устанавливаемой платформы
    ‘удалим версию
    installOrUninstall unInstallUID, DistrFolder + «8.2.12.87\1CEnterprise 8.2.msi», «1049.mst», «adminstallrestart.mst», requiredUninstall
    ‘установим версию
    installOrUninstall InstallUID, DistrFolder + «8.2.12.92\1CEnterprise 8.2.msi», «1049.mst», «adminstallrestart.mst», requiredInstall
  5. Задаем какие компоненты устанавливать:
    cmdLine = cmdLine &  “THICKCLIENT=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU
Прикладываю файл скрипта для всех кому понадобится.
Примечание: в выложенном файле со скриптом закомментированы процедуры проверки на ошибки и создания ярлыка.
Как настроить запуск скрипта
Фирма “1С” позиционирует скрипт именно как Logon-скрипт, т.е. рекомендуется средствами групповых политик задать выполнение данного скрипта при входе пользователя в систему:
Конфигурация пользователя-Конфигурация Windows-Сценарии-Вход в систему

И тут возникает нюанс: при таком раскладе скрипт выполняется с правами текущего пользователя, т.е. если пользователь не имеет прав на установку программного обеспечения то никакой установки не произойдет.
В своем личном опыте данную проблему я решил заданием выполнения данного скрипта в конфигурации компьютера а не пользователя:
Конфигурация компьютера-Конфигурация Windows-Сценарии-Автозагрузка


В таком случае скрипт отрабатывает с достаточными для установки правами, но при этом мы не видим никакой индикации процесса установки, просто компьютер дольше загружается в случае если необходима установка. Так же при такой схеме не отрабатывает процедура создания ярлыка, данную процедуру можно заменить использованием Group Policy Preferences:
Конфигурация Компьютера(Пользователя)-Настройка-Ярлыки.
 


В Итоге
Использование данного метода сводится к периодической правке скрипта (внесение изменение касательно номера версии и ProductCode)
Плюсы данного способа:
  • сам процесс установки не требует присутствия администратора
  • пользователям не требуются права администратора и вообще не требуется вмешательство пользователя
  • позволяет удалять предыдущие версии платформы
Минусы:
  • для реализации требуется среда Active Directory


ДОПОЛНИТЕЛЬНО

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

Комментариев нет:

Отправить комментарий