alpha v0.0975
This commit is contained in:
@@ -80,3 +80,8 @@ Setup. Это исключает распаковку Tcl/Tk во временн
|
|||||||
```text
|
```text
|
||||||
%ProgramData%\Inv_web Client\rustdesk-install.log
|
%ProgramData%\Inv_web Client\rustdesk-install.log
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Перед обновлением сценарий автоматически закрывает уже открытое пользовательское
|
||||||
|
окно RustDesk. После тихой установки он ожидает завершения только процесса
|
||||||
|
установщика, поэтому запущенное окно RustDesk не задерживает завершение установки
|
||||||
|
клиента.
|
||||||
|
|||||||
@@ -97,22 +97,68 @@ function Find-RustDeskExecutable {
|
|||||||
return $null
|
return $null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Stop-RustDeskDesktopProcesses {
|
||||||
|
$serviceProcessId = 0
|
||||||
|
try {
|
||||||
|
$serviceInstance = Get-CimInstance `
|
||||||
|
-ClassName Win32_Service `
|
||||||
|
-Filter "Name = 'RustDesk'" `
|
||||||
|
-ErrorAction SilentlyContinue
|
||||||
|
if ($serviceInstance) {
|
||||||
|
$serviceProcessId = [int]$serviceInstance.ProcessId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-InstallLog "Не удалось определить PID службы RustDesk: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
|
||||||
|
$desktopProcesses = @(
|
||||||
|
Get-Process -Name 'RustDesk' -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { ($serviceProcessId -le 0) -or ($_.Id -ne $serviceProcessId) }
|
||||||
|
)
|
||||||
|
foreach ($process in $desktopProcesses) {
|
||||||
|
Write-InstallLog "Закрывается пользовательский процесс RustDesk, PID: $($process.Id)."
|
||||||
|
Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (-not (Test-Path -LiteralPath $InstallerPath)) {
|
if (-not (Test-Path -LiteralPath $InstallerPath)) {
|
||||||
throw "Установщик RustDesk не найден: $InstallerPath"
|
throw "Установщик RustDesk не найден: $InstallerPath"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Stop-RustDeskDesktopProcesses
|
||||||
|
|
||||||
Write-InstallLog 'Запускается встроенный установщик RustDesk.'
|
Write-InstallLog 'Запускается встроенный установщик RustDesk.'
|
||||||
$installProcess = Start-Process -FilePath $InstallerPath -ArgumentList '--silent-install' -Wait -PassThru -WindowStyle Hidden
|
$installProcess = Start-Process -FilePath $InstallerPath -ArgumentList '--silent-install' -PassThru -WindowStyle Hidden
|
||||||
$installExitCode = $installProcess.ExitCode
|
|
||||||
Write-InstallLog "Установщик RustDesk завершён с кодом: $installExitCode"
|
# Start-Process -Wait waits for the complete process tree. RustDesk starts its
|
||||||
|
# desktop window as a child process after installation, so -Wait blocks until
|
||||||
|
# that window is closed manually. Process.WaitForExit waits only for the
|
||||||
|
# installer process itself and lets setup continue while RustDesk is running.
|
||||||
|
$installerExited = $installProcess.WaitForExit(60000)
|
||||||
|
if ($installerExited) {
|
||||||
|
$installProcess.Refresh()
|
||||||
|
$installExitCode = $installProcess.ExitCode
|
||||||
|
Write-InstallLog "Процесс установщика RustDesk завершён с кодом: $installExitCode"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$installedExecutable = Find-RustDeskExecutable
|
||||||
|
if (-not $installedExecutable) {
|
||||||
|
throw 'Установщик RustDesk не завершился за 60 секунд, установленный rustdesk.exe не найден.'
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-InstallLog 'Процесс установки не завершился за 60 секунд, но RustDesk уже установлен. Установка продолжается.'
|
||||||
|
Stop-Process -Id $installProcess.Id -Force -ErrorAction SilentlyContinue
|
||||||
|
$installExitCode = 0
|
||||||
|
}
|
||||||
|
|
||||||
$rustDeskExecutable = $null
|
$rustDeskExecutable = $null
|
||||||
for ($attempt = 0; $attempt -lt 60; $attempt++) {
|
for ($attempt = 0; $attempt -lt 45; $attempt++) {
|
||||||
$rustDeskExecutable = Find-RustDeskExecutable
|
$rustDeskExecutable = Find-RustDeskExecutable
|
||||||
if ($rustDeskExecutable) {
|
if ($rustDeskExecutable) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
Start-Sleep -Seconds 2
|
Start-Sleep -Seconds 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not $rustDeskExecutable) {
|
if (-not $rustDeskExecutable) {
|
||||||
|
|||||||
Reference in New Issue
Block a user