Удаленное обновление платформы у пользователей через групповые политики.

20.04.12

Разработка - Инструментарий разработчика

Автоматическое обновление платформы на клиентах. Групповые политики.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
inst_1c.vbs
.vbs 6,29Kb
65 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Выкладываю скрипт.. может кому понадобится.

Описывать не буду, все походу текста закомментировано.. если что задавайте вопросы. обязательно отвечу.

У меня все работает, а на поддержке 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 и тд

Советую делать так же, чтоб не переписывать скрипт.. а просто менять пару параметров при следующем обновление, закидывать в политику и вперед.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    208602    1143    413    

1039

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    38186    215    111    

203

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    17541    75    39    

92

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    25176    65    30    

95

Инструментарий разработчика Программист 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

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

9500 руб.

17.05.2024    36174    131    53    

175

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.<br/> Далее в публикации:<br/> MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    1367    4    7    

10

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    3200    7    0    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SuhoffGV 25.04.12 14:40 Сейчас в теме
Поясните, откуда запускается скрипт или куда прописать его запуск?

ActiveDirectory нет, пользователи с правами пользователей (без прав на установку ПО)
3. damontut 8 06.06.12 02:38 Сейчас в теме
без админских прав не ставиться ...
17. EugeneBespalov 22.10.14 09:20 Сейчас в теме
4. lm-alex 149 06.06.12 10:39 Сейчас в теме
Ставится, что то не так настраиваешь в политиках, скрипт должен стартовать от имени системы, пользователь установки вообще не видит, просто после перезагрузки компа, когда политика отработает, появляется новая платформа, а это занимает ну где то минут 5. Пользователи даже начинают звонить, спрашивать: "И где обещанная платформа?".
Я программист, не сисадмин, работаю в команде, обратись к грамотному админу и тебе все расскажут, ну или я попрошу своего сделать описание всех настроек, как поймаю его.
5. damontut 8 08.06.12 03:55 Сейчас в теме
(4)
да, ставится через Конфигурация Windows/Сценарии/Автозагрузка
6. Famza 85 25.07.12 14:57 Сейчас в теме
(Всем) Я не сисадмин, я только учусь.
У меня не получается запустить через групповые политики, может где напутал.
Расклад такой - сам скрипт "inst_1c.vbs" отработан: все удаляет, все устанавливает (аналогичен авторскому).
Есть сервер_1 - на нем домен поднят на Вин2000; в сети и ХР, и Вин7 - расфасованы по подразделениям.
Есть сервер_2 - на нем все что нужно для 1С - в расшаренной папке "1CDistr".
На сервер_1: создаю подразделение "Enterprise" в структуре предприятия - в нем создаю глобальную группу безопасности "Группа_1С"- добавляю комп из домена в участников группы.
Создаю ГП у "Enterprise" - Конфигурация компьютера/Windows/Сценарии/Автозагрузка - батник:
net use s: \\Сервер_2\1CEDistr
call "s:\inst_1c.vbs"
net use s:  /delete

согласно постам 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С". И не работает (((.
7. lm-alex 149 26.07.12 15:05 Сейчас в теме
Привет.
Попробуй этот код <--
net use s: \\Сервер_2\1CEDistr
call "s:\inst_1c.vbs"
net use s: /delete -->

полностью заменить на код из файлика inst_1c.vbs, не вызывай его как внешний скрипт, пускай политика его выпоняет.
8. Famza 85 26.07.12 20:42 Сейчас в теме
9. AzzZ 21.01.13 16:07 Сейчас в теме
Вопрос такой, как сделать чтобы пользователь видел индикатор загрузок, но не видел кнопку отмена:

Что вот здесь нужно написать для этого?

installer.UILevel = msiUILevelHideCancel ' msiUILevelNone 'или укажите другой вариант интерфейса пользователя

я не догоняю фразу:

Const msiUILevelHideCancel = 32 'Если используется с msiUILevelBasic, то отображается индикатор прогресса без кнопки Cancel

как их вместе юзать то?

У меня либо в молчаливовм режиме всё ставится и не видно вообще ничего, либо висит эта гребаная кнопка "отмена". Можно чтобы был индикатор но не было кнопки?
10. lm-alex 149 21.01.13 16:18 Сейчас в теме
Приветствую.

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.)
Прикрепленные файлы:
11. It-developer 26 29.07.13 16:27 Сейчас в теме
то, о чем писали в умной книжке
12. dyak84 15.08.13 17:54 Сейчас в теме
Идея хороша он грамотно реализовать ее ни так то просто есть куча моментов которые автор упустил. Что делать если вындовсы разные 32-64. Но спасибо за труд в любом случае. Так держать бы лаб идея а остальное обкатается!
13. lm-alex 149 15.08.13 20:42 Сейчас в теме
Согласен, не просто, я тупой программер, без хорошего системника сложно такие вещи делать.) всем удачи.
14. Cartman 15.11.13 14:28 Сейчас в теме
Возник вопрос. Как обновлять 2 версии? Т.е. нужно 8.2 и 8.3.
15. lm-alex 149 18.11.13 09:52 Сейчас в теме
Двумя заданиями, то есть один скрипт обновление 8.2, другой 8.3
16. EugeneBespalov 22.10.14 09:17 Сейчас в теме
Текст в начале и текст выделенный жирным более похоже написан разными людьми. Почему? В первом тексте только несколько запятых да пара дефисов опущено, а вот выделенное жирным просто жуть:
Примичание
молчиливая
не видет
программа ставиться
после пару минут
Для отправки сообщения требуется регистрация/авторизация