Выкладываю скрипт.. может кому понадобится.
Описывать не буду, все походу текста закомментировано.. если что задавайте вопросы. обязательно отвечу.
У меня все работает, а на поддержке 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 & «Distrib8.2»
Dim WshShell
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Dim shortcutTarget: shortcutTarget = WshShell.ExpandEnvironmentStrings(«%ProgramFiles%») & «1cv82Common1cestart.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
————->
Структуре папок на сервере сами думайте, у меня сделано так..
Шара: Distrib8.2 а уже внутри папки с именами версии платформы 8.2.13.205 8.2.13.219 …. 8.2.15.301 и тд
Советую делать так же, чтоб не переписывать скрипт.. а просто менять пару параметров при следующем обновление, закидывать в политику и вперед.
Поясните, откуда запускается скрипт или куда прописать его запуск?
ActiveDirectory нет, пользователи с правами пользователей (без прав на установку ПО)
без админских прав не ставиться …
Ставится, что то не так настраиваешь в политиках, скрипт должен стартовать от имени системы, пользователь установки вообще не видит, просто после перезагрузки компа, когда политика отработает, появляется новая платформа, а это занимает ну где то минут 5. Пользователи даже начинают звонить, спрашивать: «И где обещанная платформа?».
Я программист, не сисадмин, работаю в команде, обратись к грамотному админу и тебе все расскажут, ну или я попрошу своего сделать описание всех настроек, как поймаю его.
(4)
да, ставится через Конфигурация Windows/Сценарии/Автозагрузка
(Всем) Я не сисадмин, я только учусь.
У меня не получается запустить через групповые политики, может где напутал.
Расклад такой — сам скрипт «inst_1c.vbs» отработан: все удаляет, все устанавливает (аналогичен авторскому).
Есть сервер_1 — на нем домен поднят на Вин2000; в сети и ХР, и Вин7 — расфасованы по подразделениям.
Есть сервер_2 — на нем все что нужно для 1С — в расшаренной папке «1CDistr».
На сервер_1: создаю подразделение «Enterprise» в структуре предприятия — в нем создаю глобальную группу безопасности «Группа_1С»- добавляю комп из домена в участников группы.
Создаю ГП у «Enterprise» — Конфигурация компьютера/Windows/Сценарии/Автозагрузка — батник:
согласно постам 13, 28 изhttp://diprime.wordpress.com/2010/10/18/%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1 %82%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-1%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80-3/
На сервер_2: расшаренной папке даю полные права для «Группа_1С». И не работает (((.
Привет.
Попробуй этот код <—
net use s: \Сервер_21CEDistr
call «s:inst_1c.vbs»
net use s: /delete —>
полностью заменить на код из файлика inst_1c.vbs, не вызывай его как внешний скрипт, пускай политика его выпоняет.
(7) спасибо, попробую.
Вопрос такой, как сделать чтобы пользователь видел индикатор загрузок, но не видел кнопку отмена:
Что вот здесь нужно написать для этого?
installer.UILevel = msiUILevelHideCancel ‘ msiUILevelNone ‘или укажите другой вариант интерфейса пользователя
я не догоняю фразу:
Const msiUILevelHideCancel = 32 ‘Если используется с msiUILevelBasic, то отображается индикатор прогресса без кнопки Cancel
как их вместе юзать то?
У меня либо в молчаливовм режиме всё ставится и не видно вообще ничего, либо висит эта гребаная кнопка «отмена». Можно чтобы был индикатор но не было кнопки?
Приветствую.
Const msiUILevelProgressOnly = 64
installer.UILevel = msiUILevelProgressOnly.
Почему такое название константы? — читаемый код получается. Передавать в UILevel надо значение 0,1,2,3,4,5,32,64,128…
PS:
msiUILevelProgressOnly = 64 (If combined with the msiUILevelBasic value, the installer displays progress dialog boxes but does not display any modal dialog boxes or error dialog boxes.)
то, о чем писали в умной книжке
Идея хороша он грамотно реализовать ее ни так то просто есть куча моментов которые автор упустил. Что делать если вындовсы разные 32-64. Но спасибо за труд в любом случае. Так держать бы лаб идея а остальное обкатается!
Согласен, не просто, я тупой программер, без хорошего системника сложно такие вещи делать.) всем удачи.
Возник вопрос. Как обновлять 2 версии? Т.е. нужно 8.2 и 8.3.
Двумя заданиями, то есть один скрипт обновление 8.2, другой 8.3
Текст в начале и текст выделенный жирным более похоже написан разными людьми. Почему? В первом тексте только несколько запятых да пара дефисов опущено, а вот выделенное жирным просто жуть:
Примичание
молчиливая
не видет
программа ставиться
после пару минут