8.х Установка 1С при помощи скрипта

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем n.s.gnedash, 7 дек 2012.

  1. TopicStarter Overlay
    n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    В нашей организации в 1с работает >100 пользователей, поэтому обновление платформы каждому сотруднику занимает достаточно много времени. Поэтому я при помощи гугла решил написать первый свой скрипт, который сделает это самостоятельно! За косяки сильно не трольте !:) Может быть кому-нибудь будет полезен!
    Скрип тестировался на 2х голых компах, на которых не было ни каких платформ вообще.
    По каким-то причинам уже больше месяца не могу ни выкладывать ни файлы, ни скрины, выложил сюда готовый вариант http://rusfolder.com/33993565

    Код:
    Option Explicit
    Const msiUILevelNoChange = 1	  
    Const msiUILevelDefault = 1		
    Const msiUILevelNone = 2		  
    Const msiUILevelBasic = 3		  
    Const msiUILevelReduced = 4		
    Const msiUILevelFull = 5		  
    Const msiUILevelHideCancel = 32	
    Const msiUILevelProgressOnly = 64  
    Const msiUILevelEndDialog = 128	
    Const DistrFolder = "C:\Program Files\1сv82\" //укажем путь для установки
    Const shortcutName = "Запуск 1C Предприятия"
    Dim shortcutTarget : shortcutTarget = DistrFolder & "1cestart.exe"
    Const requiredInstall = 1
    Const requiredUninstall = 0
    Const InstallUID= "{3B5994C5-5FCA-459A-8EED-BFD83429AC9A}"  //это значение нужно взять из дистрибутива из файла setup.ini - ProductCode
    installOrUninstall InstallUID, DistrFolder + "8.2.16.368\1CEnterprise 8.2.msi", "1049.mst", "adminstallrestart.mst", requiredInstall   //8.2.16.368 укажем название папки, в которую будет установлена платформа
    Sub installOrUninstall (ByVal productCode, ByVal msiPackage, ByVal mstTransform, ByVal mstinstall, ByVal requiredAction)
    productCode = "{3B5994C5-5FCA-459A-8EED-BFD83429AC9A}"  //это значение нужно взять из дистрибутива из файла setup.ini - ProductCode
    msiPackage = "\\feba\1c$\1CEDistr\8.2.16.368\windows\1CEnterprise 8.2.msi"   //полный путь к дистрибутиву, а именно к файлу 1CEnterprise 8.2.msi
    
    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
    //установка платформы
    MsgBox("Устанавливаем платформу" & "cmd=" & cmdLine & " msi=" & msiPackage)
    Set session = installer.InstallProduct(msiPackage, cmdLine) : processError
    
    createShurtcut()
    ElseIf Not session Is Nothing AND requiredAction = requiredUninstall Then
    
    
    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)
    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
    
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    У меня на работе что-то подобное. Работает отлично. Обновляется стабильно. Тоже всем советую попробовать, кто еще не попробовал. :)
  3. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А мы используем средства самой 1С. Подробно должно быть описано в комплектной литературе. Но если в кратце....

    Имеется расшареный каталог, в котором по папкам разложены дистрибутивы платформ. Название папок "8.2.хх.ххх". Когда появляется новый релиз платформы, то создаем новую папку с соответствующим именем и кладем туда дистрибутив.
    Далее делаем первую установку. Так как используем сервер 1С:Предприятия, то в первую очередь делаем установку сервера. По сути нужен файл "1cestart.exe" последнего релиза, который есть в каталоге программы. После установки копируем этот файл в расшаренный каталог.
    Так же в этом каталоге имеется файл "1CESCmn.cfg". Его содержимое смотрим в документации, или не сложно нагуглить. В данном файле настройки выполнения установки релиза: расположение дистрибутивов, какие компоненты и язык устанавливать.
    Еще в данный каталог можно положить файл "Bases.v8i". В нем прописаны настройки подключения к базам. Они отображаются для всех пользователей. Пользователи их не могут удалить или изменить, но в свой локальный список могут добавить другие базы.

    Т.е. имеется следующая структура:
    Код:
    [Кталог дистрибутива 1]
    [Кталог дистрибутива 2]
    ...
    [Кталог дистрибутива N]
    1cestart.exe
    1CESCmn.cfg
    Bases.v8i
    Для всех пользователей имеется ярлык на общий файл "1cestart.exe".
    При запуске данного файла идет проверка установленной платформы. Если платформа не установлена или не та версия, то идет установка платформы последнего релиза.

    Следует заметить, что для установки у пользователя должен быть доступ к каталогу "Program files", иначе установка не пойдет. Для этого у него должны быть права локального админа, либо в политиках безопасности настройки на запуск инсталятора с повышенными привилегиями.

    PS если данный вопрос интересен, могу покопаться в литературе и подробнее описать содержимое настроечных файлов и т.п.
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Вот с этим-то как раз, в большинстве случаев, и проблема. Поэтому и приходится "изгаляться" со скриптами, не используя штатные возможности 1С.
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Во во. У нас смысл такой же как и у WaRDeR. Также папка с дистрибутивами. В административной установке тоже, по-моему, можно сделать чтобы пользователь не видел процесса установки. Самый большой гемор был с правами. Скрипт более гибок. :)
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Но, думаю, вы согласитесь, что в большинстве случаев (по количеству) пользователи 1С это мелкие или средние организации, у которых имеется 3-5 машин, и которые не только не имеют выделенного сервера и разграничения по правам, но и собственного админа. Их обслуживают, в таком случае, внештатные специалисты.
    А с такой организацией процесса, обновление/установка занимает минуты, даже можно скинуть ссылку на архив, в который упаковать дистрибутив и екзешник, и инструкцию, в которой описать в какой каталог все это распаковать. А то и подготовить самораспаковывающийся архив.

    Я сам больше программист, и в штате у нас есть отдел админов. Каким-то образом с задачей справились :D. Думаю, если один раз повозиться, разобраться какие права нужны, то дальше проблем не возникает. Или поясните мне, почему нельзя настроить политики безопасности на запуск MS инсталяторов? Или почему нельзя вынести ярлык на рабочий стол, в котором установить флаг запуска с правами админа? Самый крайний случай, всех "загнать" за рабочие места, установить на группу пользователей админские права и "скомандовать" стартануть 1С. Кто не успел, или не послушал админа, несут шоколадку/печеньки/пиво в индивидуальном порядке :D.
  7. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Совершенно верно. :) У меня на работе около 180 пользователей и большинство из них даже не знают, что такое компьютер. На курсы ходят. Как включать и т.д. И таким людям по-любому не надо делать админом на компе. Вот и приходится скрипт использовать. А в остальных случаях, конечно же, лучше использовать Ваш вариант. ))))

Поделиться этой страницей