47 lines
2.3 KiB
PowerShell
47 lines
2.3 KiB
PowerShell
$ErrorActionPreference = 'Continue'
|
|
$svc = Get-Service -Name 'Syncro','SyncroLive','SyncroOvermind' -ErrorAction SilentlyContinue
|
|
if ($svc) {
|
|
$names = ($svc | ForEach-Object { $_.Name + '=' + $_.Status }) -join ','
|
|
Write-Output ('SYNCRO-ALREADY-INSTALLED services=[' + $names + ']')
|
|
exit 0
|
|
}
|
|
# Clean any leftover from prior failed installs
|
|
$repairDir = 'C:\Program Files\RepairTech'
|
|
if (Test-Path $repairDir) {
|
|
Remove-Item $repairDir -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Output 'CLEANED prior RepairTech directory'
|
|
}
|
|
foreach ($k in @('HKLM:\SOFTWARE\WOW6432Node\RepairTech\Syncro','HKLM:\SOFTWARE\WOW6432Node\RepairTech\Kabuto')) {
|
|
if (Test-Path $k) { Remove-Item $k -Recurse -Force -ErrorAction SilentlyContinue; Write-Output ("CLEANED registry: $k") }
|
|
}
|
|
$msi = 'C:\Windows\Temp\SyncroSetup-khalsa.msi'
|
|
if (-not (Test-Path $msi)) {
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072
|
|
(New-Object Net.WebClient).DownloadFile('https://rmm.syncromsp.com/dl/msi/djEtOTQ1NjU1NC0xNTA3NjA4MzYxLTQ4NzUzLTM2ODUwMjI=', $msi)
|
|
Write-Output ('MSI downloaded ' + [math]::Round((Get-Item $msi).Length / 1MB, 1) + ' MB')
|
|
} else {
|
|
Write-Output ('MSI already present ' + [math]::Round((Get-Item $msi).Length / 1MB, 1) + ' MB')
|
|
}
|
|
$log = 'C:\Windows\Temp\syncro-install-final.log'
|
|
$p = Start-Process msiexec.exe -ArgumentList '/i', $msi, '/qn', '/norestart', '/L*v', $log -Wait -PassThru
|
|
Write-Output ('msiexec exit=' + $p.ExitCode)
|
|
if ($p.ExitCode -eq 0) {
|
|
Start-Sleep -Seconds 30
|
|
$svc2 = Get-Service -Name 'Syncro','SyncroLive','SyncroOvermind' -ErrorAction SilentlyContinue
|
|
if ($svc2) {
|
|
Write-Output ('SYNCRO-INSTALL-OK ' + (($svc2 | ForEach-Object { $_.Name + '=' + $_.Status }) -join ','))
|
|
} else {
|
|
Write-Output 'SYNCRO-SERVICES-NOT-YET-VISIBLE - may need a moment to register'
|
|
}
|
|
} else {
|
|
Write-Output '--- last 30 lines of install log ---'
|
|
if (Test-Path $log) { Get-Content $log -Tail 30 }
|
|
Write-Output '--- Return value 3 context ---'
|
|
if (Test-Path $log) {
|
|
$lines = Get-Content $log
|
|
$idx = ($lines | Select-String 'Return value 3' | Select-Object -First 1).LineNumber
|
|
if ($idx) { $lines[[math]::Max(0, $idx - 10)..[math]::Min($lines.Count - 1, $idx + 2)] | Write-Output }
|
|
}
|
|
}
|
|
Remove-Item $msi -Force -ErrorAction SilentlyContinue
|