Выкладываю скрипт.. может кому понадобится.
Описывать не буду, все походу текста закомментировано.. если что задавайте вопросы. обязательно отвечу.
У меня все работает, а на поддержке 8 регионов + Столичный, а это сотни рабочих мест... руками сами понимаете, платформу обновить нереально, у пользователей нет прав на установку ПО, поэтому административная установка не катит, пришлось мудрить через политики.
Примичание:
Главные 3-5 констант, 3 если не требуется удаление старой платформы, 5 если требуется.
SrvName - Имя сервера, от куда ставим.
OldVer, unInstallUID - это данные по версии платформы которую надо удалить, если оно вам надо.
NewVer, InstallUID - это данные по версии которую устанавливаем.
Далее:
THICKCLIENT=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU" - в коде можно поменять, что ставим на клиента, думаю все понятно.
После старта ситемы просиходит молчиливая установка, тоесть пользователь ничего не видет, программа ставиться в фоне, и уже после пару минут в меню появится новая платформа.
Скрипт:
< --------------------------------------
Option Explicit
Const SrvName = "ServerDistribs" 'Имя сервера
'Значение параметра ProductCode из файла setup.ini ...
'... для удаляемой версии
Const OldVer = "8.2.13.219" 'Текущая версия
Const unInstallUID = "{3A8D1763-00C8-48E1-B8EF-B66B8A908E32}"
'... для устанавливаемой версии
Const NewVer = "8.2.15.301" 'Новая версия
Const InstallUID = "{BC89E40C-CCE7-4B86-9586-8338F5B48EC1}"
Const msiUILevelNoChange = 0 'Не изменять интерфейс пользователя
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 requiredInstall = 1 ' требуется установка
Const requiredUninstall = 0 ' требуется удаление
'***** Необходимо изменить на реальный каталог установки
Dim DistrFolder
DistrFolder = "\\" & SrvName & "\Distrib\8.2\"
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim shortcutTarget: shortcutTarget = WshShell.ExpandEnvironmentStrings("%ProgramFiles%") & "\1cv82\Common\1cestart.exe"
'Режим установки – logon-скрипт
Dim logonInstall, restartInstall, mstTransfomU, mstTransfomI
'Режим установки – групповая политика
'Режим установки – logon-скрипт
logonInstall = DistrFolder & NewVer & "\adminstallrelogon.mst"
'Режим установки – групповая политика
restartInstall = DistrFolder & NewVer & "\adminstallrestart.mst"
mstTransfomU = DistrFolder & OldVer & "\1049.mst"
mstTransfomI = DistrFolder & NewVer & "\1049.mst"
'Значение параметра ProductCode из файла setup.ini ...
'удалим предыдущую версию
Uninstall unInstallUID, DistrFolder & OldVer & "\1CEnterprise 8.2.msi", mstTransfomU, ""
'установим новую версию
Install InstallUID, DistrFolder & NewVer & "\1CEnterprise 8.2.msi", mstTransfomI, logonInstall
'процедура установки указанной версии продукта
Sub Install(ByVal productCode, ByVal msiPackage, ByVal mstTransform, ByVal mstInstall)
'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 = msiUILevelHideCancel ' msiUILevelNone 'или укажите другой вариант интерфейса пользователя
'проверка установки продукта
Set session = installer.OpenProduct(productCode)
If session Is Nothing And requiredInstall = 1 Then
'продукт не установлен и требуется его установка
cmdLine = "TRANSFORMS=" & mstInstall & ";"
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)
'создадим ярлык на рабочем столе
'createShortcut
End If
Set session = Nothing
Set installer = Nothing
End Sub
'процедура удаления указанной версии продукта
Sub Uninstall(ByVal productCode, ByVal msiPackage, ByVal mstTransform, ByVal mstInstall)
'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 = msiUILevelHideCancel ' msiUILevelNone 'или укажите другой вариант интерфейса пользователя
'проверка установки продукта
Set session = installer.OpenProduct(productCode)
If Not session Is Nothing And requiredUninstall = 1 Then
'платформа уже установлена и требуется ее удаление
'обьект session может быть только один!
Set session = Nothing
'укажем, что нужно удалить с компьютера пользователя эту версию
cmdLine = "REMOVE=ALL"
'удалим
Set session = installer.InstallProduct(msiPackage, cmdLine)
End If
Set session = Nothing
Set installer = Nothing
End Sub
'обработка ошибок
Sub processError()
Dim msg
If Err = 0 Then Exit Sub
msg = Err.Source & " " & Hex(Err) & ": " & Err.Description
WScript.Echo msg
WScript.Quit 2
End Sub
'создание ярлыка
Sub createShortcut()
Dim WshShell, oShellLink
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim strDesktop: strDesktop = WshShell.SpecialFolders("Desktop")
Set oShellLink = WshShell.createShortcut(strDesktop & "\" & "1CПредприятие.lnk")
oShellLink.TargetPath = shortcutTarget
oShellLink.WindowStyle = 1
oShellLink.Description = shortcutName
oShellLink.Save
Set oShellLink = Nothing
Set WshShell = Nothing
End Sub
------------->
Структуре папок на сервере сами думайте, у меня сделано так..
Шара: \Distrib\8.2\ а уже внутри папки с именами версии платформы 8.2.13.205 8.2.13.219 .... 8.2.15.301 и тд
Советую делать так же, чтоб не переписывать скрипт.. а просто менять пару параметров при следующем обновление, закидывать в политику и вперед.