Административная установка платформы “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. Путь к общедоступному каталогу с дистрибутивами:
    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-Сценарии-Вход в систему

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

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

Конфигурация компьютера-Конфигурация Windows-Сценарии-Автозагрузка

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

Плюсы данного способа:
сам процесс установки не требует присутствия администратора
пользователям не требуются права администратора и вообще не требуется вмешательство пользователя
позволяет удалять предыдущие версии платформы
Минусы:
для реализации требуется среда Active Directory