From 07b254397284090a632baa4b0411a66855a0766b Mon Sep 17 00:00:00 2001 From: bradhawkins85 Date: Sat, 17 Apr 2021 13:41:35 +1000 Subject: [PATCH] Update installer.ps1 Test and wait (up to 15 seconds) to be able to connect to the server to download installer, don't try and download if we can't connect. --- api/tacticalrmm/core/installer.ps1 | 50 ++++++++++++++++++------------ 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/api/tacticalrmm/core/installer.ps1 b/api/tacticalrmm/core/installer.ps1 index eb6f3533..b0b15bdb 100644 --- a/api/tacticalrmm/core/installer.ps1 +++ b/api/tacticalrmm/core/installer.ps1 @@ -9,6 +9,7 @@ $rdp = rdpchange $ping = pingchange $auth = '"tokenchange"' $downloadlink = 'downloadchange' +$apilink = $downloadlink.split('/') [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 @@ -47,24 +48,35 @@ If (Get-Service $serviceName -ErrorAction SilentlyContinue) { # pass } - Try - { - Invoke-WebRequest -Uri $downloadlink -OutFile $OutPath\$output - Start-Process -FilePath $OutPath\$output -ArgumentList ('/VERYSILENT /SUPPRESSMSGBOXES') -Wait - write-host ('Extracting...') - Start-Sleep -s 5 - Start-Process -FilePath "C:\Program Files\TacticalAgent\tacticalrmm.exe" -ArgumentList $installArgs -Wait - exit 0 - } - Catch - { - $ErrorMessage = $_.Exception.Message - $FailedItem = $_.Exception.ItemName - Write-Error -Message "$ErrorMessage $FailedItem" - exit 1 - } - Finally - { - Remove-Item -Path $OutPath\$output + $X = 0 + do { + Write-Output "Waiting for network" + Start-Sleep -s 5 + $X += 1 + } until(($connectreult = Test-NetConnection $apilink[2] -Port 443 | ? { $_.TcpTestSucceeded }) -or $X -eq 3) + + if ($connectreult.TcpTestSucceeded -eq $true){ + Try + { + Invoke-WebRequest -Uri $downloadlink -OutFile $OutPath\$output + Start-Process -FilePath $OutPath\$output -ArgumentList ('/VERYSILENT /SUPPRESSMSGBOXES') -Wait + write-host ('Extracting...') + Start-Sleep -s 5 + Start-Process -FilePath "C:\Program Files\TacticalAgent\tacticalrmm.exe" -ArgumentList $installArgs -Wait + exit 0 + } + Catch + { + $ErrorMessage = $_.Exception.Message + $FailedItem = $_.Exception.ItemName + Write-Error -Message "$ErrorMessage $FailedItem" + exit 1 + } + Finally + { + Remove-Item -Path $OutPath\$output + } + } else { + Write-Output "Unable to connect to server" } }