- Запускается проверка наличия приложение 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.logrem версия 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<#
.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