Как отследить установлена ли компьютере нужная платформа 1с?
Переходим на платформу 8.3.5, попросил админов установить платформу юзерам, они сказали типа сделано.
В прошлый раз тоже сказали, что сделали, а потом дружно бегали и в срочном порядке доустанавливали.
Хочу небольшой скрипт сделать при запуске 1с, что бы проверила есть ли необходимый релиз платформы, но как это лучше сделать? Просто проверить наличие каталога или есть более верный способ?
В прошлый раз тоже сказали, что сделали, а потом дружно бегали и в срочном порядке доустанавливали.
Хочу небольшой скрипт сделать при запуске 1с, что бы проверила есть ли необходимый релиз платформы, но как это лучше сделать? Просто проверить наличие каталога или есть более верный способ?
По теме из базы знаний
- 1С + Apache + SSL: почему вы должны использовать SSL (наглядная демонстрация)
- Сервисы 1С. Часть I
- Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев
- Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins. Часть 1. Описание системы и обзор инструментария
- Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) 3762515,
1) делается через - 1cestart.exe.
2) посмотреть как в типовых сделана проверка на наличие релиза. Правда установить не выйдет, но всёже.
ебольшой скрипт сделать при запуске 1с, что бы проверила есть ли необходимый релиз платформы, но как это лучше сделать? Просто проверить наличие каталога или есть более верный способ?
- 2 варианта:
1) делается через - 1cestart.exe.
2) посмотреть как в типовых сделана проверка на наличие релиза. Правда установить не выйдет, но всёже.
Мало информации. Если есть сеть с актив директори, то это делается через логон скрипт. При входе пользователя автоматически удаляется старая версия и ставиться новая. Напряги своих админов, чтобы они тоже это сделали. Тогда просто меняешь этот скрипт и у всех меняется версия. Если АД нету, то этот же скрипт можно где-то на шару положить и всем пользователям сделать на него ярлык. Если пишет, что не та платформа, то пользователю достаточно будет щелкнуть по ярлыку и у него все обновиться.
Скрипт, которым я пользуюсь
Option Explicit
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 DistrFolder="\\192.168.2.254\1CDistr\"
Const shortcutName = "Запуск 1C Предприятия"
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim shortcutTarget : shortcutTarget = WshShell.ExpandEnvironmentStrings("%ProgramFiles%") & "\1cv8\Common\1cestart.exe"
'Константы для определения действия
Const requiredInstall = 1 ' требуется установка
Const requiredUninstall = 0 ' требуется удаление
'Режим установки – logon-скрипт
Const logonInstall="\\192.168.2.254\1CDistr\8.3.5.1119\adminstallrelogon.mst"
'Режим установки – групповая политика
Const restartInstall="\\192.168.2.254\1CDistr\8.3.5.1119\adminstallrestart.mst"
Const mstTransfomU = "\\192.168.2.254\1CDistr\8.3.4.437\1049.mst"
Const mstTransfomI = "\\192.168.2.254\1CDistr\8.3.5.1119\1049.mst"
'Значение параметра ProductCode из файла setup.ini ...
'... для удаляемой версии
Const unInstallUID="{AFF1D08A-6D83-45BB-BBED-E40079E9EC3C}"
'... для устанавливаемой версии
Const InstallUID="{D9BDBB72-467E-4EEB-A5D0-F9DEC1398FC6}"
'удалим предыдущую версию
installOrUninstall unInstallUID, "\\192.168.2.254\1CDistr\8.3.4.437\1CEnterprise 8.msi", mstTransfomU, "", requiredUninstall
'установим новую версию
installOrUninstall InstallUID, "\\192.168.2.254\1CDistr\8.3.5.1119\1CEnterprise 8.msi", mstTransfomI, logonInstall, 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 = msiUILevelNone 'msiUILevelNone 'или укажите другой вариант интерфейса пользователя
'проверка установки продукта
Set session = installer.OpenProduct(productCode)
If session Is Nothing AND requiredAction = requiredInstall 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=1 LANGUAGES=RU"
End If
'установим платформу
Set session = installer.InstallProduct(msiPackage, cmdLine)
'создадим ярлык на рабочем столе
'createShortcut()
ElseIf Not session Is Nothing AND requiredAction = requiredUninstall 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 & "\" & shortcutName & ".lnk")
oShellLink.TargetPath = shortcutTarget
oShellLink.WindowStyle = 1
oShellLink.Description = shortcutName
oShellLink.Save
Set oShellLink = Nothing
Set WshShell = Nothing
End Sub
Скрипт, которым я пользуюсь
Option Explicit
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 DistrFolder="\\192.168.2.254\1CDistr\"
Const shortcutName = "Запуск 1C Предприятия"
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim shortcutTarget : shortcutTarget = WshShell.ExpandEnvironmentStrings("%ProgramFiles%") & "\1cv8\Common\1cestart.exe"
'Константы для определения действия
Const requiredInstall = 1 ' требуется установка
Const requiredUninstall = 0 ' требуется удаление
'Режим установки – logon-скрипт
Const logonInstall="\\192.168.2.254\1CDistr\8.3.5.1119\adminstallrelogon.mst"
'Режим установки – групповая политика
Const restartInstall="\\192.168.2.254\1CDistr\8.3.5.1119\adminstallrestart.mst"
Const mstTransfomU = "\\192.168.2.254\1CDistr\8.3.4.437\1049.mst"
Const mstTransfomI = "\\192.168.2.254\1CDistr\8.3.5.1119\1049.mst"
'Значение параметра ProductCode из файла setup.ini ...
'... для удаляемой версии
Const unInstallUID="{AFF1D08A-6D83-45BB-BBED-E40079E9EC3C}"
'... для устанавливаемой версии
Const InstallUID="{D9BDBB72-467E-4EEB-A5D0-F9DEC1398FC6}"
'удалим предыдущую версию
installOrUninstall unInstallUID, "\\192.168.2.254\1CDistr\8.3.4.437\1CEnterprise 8.msi", mstTransfomU, "", requiredUninstall
'установим новую версию
installOrUninstall InstallUID, "\\192.168.2.254\1CDistr\8.3.5.1119\1CEnterprise 8.msi", mstTransfomI, logonInstall, 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 = msiUILevelNone 'msiUILevelNone 'или укажите другой вариант интерфейса пользователя
'проверка установки продукта
Set session = installer.OpenProduct(productCode)
If session Is Nothing AND requiredAction = requiredInstall 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=1 LANGUAGES=RU"
End If
'установим платформу
Set session = installer.InstallProduct(msiPackage, cmdLine)
'создадим ярлык на рабочем столе
'createShortcut()
ElseIf Not session Is Nothing AND requiredAction = requiredUninstall 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 & "\" & shortcutName & ".lnk")
oShellLink.TargetPath = shortcutTarget
oShellLink.WindowStyle = 1
oShellLink.Description = shortcutName
oShellLink.Save
Set oShellLink = Nothing
Set WshShell = Nothing
End Sub
Для установки по скрипту нужны права админские.
Да, есть АД и устанавливают через групповую политику, но что-то у них не получается, в прошлый раз платформа установилась только у половины пользователей по остальным быстренько бегали и делали всё руками.
Мне бы сейчас найти верный способ определения наличия нужного релиза 1с, а как обновлять пусть уж решают.
Да, есть АД и устанавливают через групповую политику, но что-то у них не получается, в прошлый раз платформа установилась только у половины пользователей по остальным быстренько бегали и делали всё руками.
Мне бы сейчас найти верный способ определения наличия нужного релиза 1с, а как обновлять пусть уж решают.
3762515, через ад можно и пользователям без прав админа установить, только скрипт нужно не на пользователя, а на комп вешать... в инете легко можно найти как это сделать. У меня более 100 компов в сети и все нормально обновляются. Единственные проблемы у тех кто комп на ночь не выключили, но это решается перезагрузкой компа... Так что пинай админов. А определить вообще проблем нет. Проверить существует ли каталог C:\Program Files (x86)\1cv8\8.3.4.496 на 32 компах путь без (x86), где 8.3.4.496 номер версии 1с. Можно и через реестр. Вариантов несколько.
СистемнаяИнформация = Новый СистемнаяИнформация;
ВерсияПриложения = СистемнаяИнформация.ВерсияПриложения;
Если Сред(ВерсияПриложения, 6, 1) = "." Тогда
ВерсияПриложения = Лев(ВерсияПриложения, 4) + "0" + Сред(ВерсияПриложения, 5, 1);
КонецЕсли;
Т.е. если 3 цифра платформы 1, то добавим ноль, тогда переводить в строку не нужно и сравниваем строками корректно.
8.3.05 < 8.3.11.
Работать будет пока 3 цифра 2 знака будет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот