Задать вопрос
  • Как удалить все версии приложения VinteoDesktop на всех рабочих станциях предприятия, и установить последнюю версию?

    @Stone7pro Автор вопроса
    Долго бился, как обновить приложение VinteoDesktop на всём предприятии. В итоге - решил!
    Для распространения решения использовал SCCM.
    Текст Удалятора не поместился в решении (получается более 10 тыс. символов). Разместил в комментариях.

    АЛГОРИТМ РЕШЕНИЯ:
    spoiler

    - Запускается проверка наличия приложение VinteoDesktop в текущем пользователе.
    	- Если приложение имеет версию 4.15.2 или выше - Установлено. 
    		- Проверка проходит по версии файла VinteoDesktop.exe в текущем профиле.
    
    	- Если приложения нет или оно ниже версии 4.15.2, то:
    		- Запустить проверку наличия приложения-зависимости "Удалятор", которое должно быть установлено перед VinteoDesktop 4.15.2:
    			- Если на компьютере есть файл C:\TEMP\VinteoRemover.log - Установлено, тогда:
    				- Вывести предупреждение пользователю о том, что:
    					- текущее приложение VinteoDesktop будет закрыто в течении 2 часов или как только будет нажата кнопка "ОК".
    					- Закрыть приложение VinteoDesktop
    				- Установить VinteoDesktop 4.15.2 в текущий профиль пользователя.
    			- Eсли на компьютере нет файла C:\TEMP\VinteoRemover.log:
    				- Вывести предупреждение пользователю о том, что:
    					- Приложение VinteoDesktop будет закрыто в течении 4 часов или как только будет нажата кнопка "ОК"
    					- Таймер обратного отсчета 14000 секунд (4 часа)
    					- Закрыть приложение VinteoDesktop.
    					- Создать файл C:\TEMP\Vinteo_MSG.log, как признак корректной установки приложения SCCM.
    				- Запустить приложение "Удалятор":
    					- Удалить все версии VinteoDesktop в:
    						- Program Files
    						- Program Files (x86)
    						- профилях всех пользователей
    					- создать  на компьютере файл C:\TEMP\VinteoRemover.log
    				- Запустить установку VinteoDesktop 4.15.2 в профиле текущего пользователя:
    					- Вывести предупреждение пользователю о том, что:
    						- текущее приложение VinteoDesktop будет закрыто в течении 2 часов или как только будет нажата кнопка "ОК".
    					- Закрыть приложение VinteoDesktop
    					- Установить VinteoDesktop 4.15.2 в текущий профиль пользователя.
    
    В итоге, для установки через SCCM, требуется:
    	- Приложение "VinteoDesktop 4.15.2"
    		- содержит исполняемый файл и bat-файл с необходимыми командами.
    		- установка проходит через bat обёртку т.к.:
    			- необходимо вывести предупреждение пользователю о том, что текущее приложение будет закрыто. Работает без таймера, но в в тексте сообщения указывается время запуска уведомления. 
    			- без bat обёртки установка через SCCM в режиме "для пользователя" - зависает. Но если у пользователя есть админские права, то установка проходит корректно. 
    	- Приложение "Удалятор"
    		- Зависимость с приложением "VinteoDesktop 4.15.2"
    			- выполняется перед установкой "VinteoDesktop 4.15.2"
    		- содержит скрипт PowerShell, который закрывает текущее приложение VinteoDesktop  и удаляет все его версии из PFiles+Pfiles(x86)+профилей всех пользователей.
    		- выполняется в режиме "для системы".
    		- Файл VinteoRemover.log
    			- используется, как признак корректной работы приложения "Удалятор".
    	- Приложение "Уведомление"
    		- Зависимость с приложением "Удалятор".
    			- выполняется перед установкой приложения "Удалятор".
    		- содержит скрипт PowerShell, который выводит сообщение в текущий сеанс пользователя, с обратным отсчетом и кнопкой ОК (что бы не ждать).
    			- таймер 14000 сек (4 часа).
    		- устанавливается в режиме "для пользователя".
    		- Признаком установки является наличие файла C:\TEMP\Vinteo_MSG.log



    - ТЕКСТ BAT ФАЙЛА ДЛЯ УСТАНОВКИ Приложение "VinteoDesktop 4.15.2", С УВЕДОМЛЕНИЕМ ПОЛЬЗОВАТЕЛЯ И ЗАКРЫТИЕМ ПРИЛОЖЕНИЯ.
    spoiler

    rem версия 1.2
    rem Уведомление отображает время, в которое было выведено.
    rem
    REM РАБОЧАЯ ВЕРСИЯ ДЛЯ BAT ФАЙЛА, с таймером
    rem Уведомление пользователю перед закрытием приложения
    rem Таймер есть.
    
    @echo off
    chcp 65001 >nul
    
    rem Фиксируем текущее время (убираем лишние пробелы)
    set "NOWTIME=%time:~0,8%"
    
    rem Показываем уведомление с указанием времени
    powershell -Command "$wshell = New-Object -ComObject Wscript.Shell; $wshell.Popup('[' + '%NOWTIME%' + '] Будет закрыт VinteoDesktop и установлено обновление.' + [Environment]::NewLine + 'Для продолжения нажмите кнопку или процесс продолжится автоматически через 1 час', 15, 'Обновление VinteoDesktop', 64 + 0);"
    
    rem Закрытие процесса
    taskkill /f /im "VinteoDesktop.exe"
    
    rem Установка
    "vinteo-desktop-4.15.2-x64.exe" /S /CURRENTUSER



    ТЕКСТ СКРИПТА ДЛЯ УВЕДОМЛЕНИЯ ПОЛЬЗОВАТЕЛЯ, С ТАЙМЕРОМ, ПЕРЕД УДАЛЕНИЕМ ВСЕХ ВЕРСИЙ ВИНТЕО
    spoiler

    <#
    .SYNOPSIS
        Скрипт уведомления пользователя о удалении VinteoDesktop
    .VERSION
        1.1
    .DESCRIPTION
        Выводит окно с сообщением и таймером обратного отсчета.
    Пользователь может нажать "ОК" или дождаться окончания таймера.
    В конце создает папку C:\TEMP\ и файл Vinteo_MSG.log
    #>
    
    # Версия скрипта
    $ScriptVersion = "1.1"
    
    # Время таймера в секундах (используем script: для доступа из событий)
    $script:Countdown = 14000
    
    # Текст сообщения
    $MessageText = "ВНИМАНИЕ! Все версии VinteoDesktop будут удалены и установлена актуальная версия.`nНажмите ОК или дождитесь окончания таймера."
    
    # Заголовок окна
    $WindowTitle = "Обновление VinteoDesktop"
    
    # Создаем окно уведомления с таймером
    Add-Type -AssemblyName System.Windows.Forms
    $form = New-Object System.Windows.Forms.Form
    $form.Text = $WindowTitle
    $form.Size = New-Object System.Drawing.Size(400,150)
    $form.StartPosition = "CenterScreen"
    # Текстовая метка
    $label = New-Object System.Windows.Forms.Label
    $label.Text = "$MessageText`nОкно закроется через $script:Countdown секунд."
    $label.Size = New-Object System.Drawing.Size(380,60)
    $label.Location = New-Object System.Drawing.Point(10,20)
    $form.Controls.Add($label)
    # Кнопка OK
    $okButton = New-Object System.Windows.Forms.Button
    $okButton.Text = "OK"
    $okButton.Size = New-Object System.Drawing.Size(75,23)
    $okButton.Location = New-Object System.Drawing.Point(150,80)
    $okButton.Add_Click({ $form.Close() })
    $form.Controls.Add($okButton)
    # Таймер обратного отсчета
    $timer = New-Object System.Windows.Forms.Timer
    $timer.Interval = 1000
    $timer.Add_Tick({
        $script:Countdown--
        if ($script:Countdown -le 0) {
            $timer.Stop()
            $form.Close()
        } else {
            $label.Text = "$MessageText`nОкно закроется через $script:Countdown секунд."
        }
    })
    $timer.Start()
    # Показать окно
    $form.Topmost = $true
    $form.Add_Shown({$form.Activate()})
    [void]$form.ShowDialog()
    # === Проверка и создание папки + лог ===
    $LogPath = "C:\TEMP"
    $LogFile = Join-Path $LogPath "Vinteo_MSG.log"
    if (-not (Test-Path $LogPath)) {
        New-Item -ItemType Directory -Path $LogPath -Force | Out-Null
    }
    "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Скрипт уведомления завершён (версия $ScriptVersion)" | Out-File -FilePath $LogFile -Encoding UTF8 -Append

    Ответ написан
  • Как устранить тормоза при открытии файловой базы 1С по локальному пути на WinSrv2016?

    @Stone7pro Автор вопроса
    Решил проблему!

    Если ранее база, опубликованная через Apache, по ссылке открывалась мгновенно, а по локальному пути типа D:\1CBase\ - 3-4- минуты, то теперь ситуация выровнялась.
    Web ссылка всё равно быстрее, но теперь база по локальному пути открывается за 20-30 секунд.

    Обошлось настройкой SMB протокола, который, как оказывается, так же используется при открытии локальных файлов.
    Показываю как включите оптимизацию SMB для локальной работы:
    Set-SmbServerConfiguration -EnableSecuritySignature $false -Force
    Set-SmbServerConfiguration -EnableStrictNameChecking $false -Force

    Можно ещё отключить устаревшую версию SMB протокола:
    Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

    Так же стоит добавить оптимизацию файловой системы:
    fsutil behavior set DisableLastAccess 1
    Ответ написан
    Комментировать