77 lines
1.8 KiB
PowerShell
77 lines
1.8 KiB
PowerShell
param(
|
|
[string]$source,
|
|
[string]$destination
|
|
)
|
|
|
|
Clear-Host
|
|
|
|
Write-Host "Stopping installer ... " -ForegroundColor cyan -NoNewLine
|
|
|
|
$installer = Stop-Process -Name "SPTInstaller" -ErrorAction SilentlyContinue
|
|
|
|
if ($installer -ne $null)
|
|
{
|
|
Write-Warning "Something went wrong, couldn't stop installer process'"
|
|
return;
|
|
}
|
|
|
|
Write-Host "OK" -ForegroundColor green
|
|
|
|
if (-not(Test-Path $source) -and -not(Test-Path $destination)) {
|
|
Write-Warning "Can't find a required file"
|
|
Write-host ""
|
|
Write-Host "Press [enter] to close ..."
|
|
Read-Host
|
|
exit
|
|
}
|
|
|
|
Write-Host "Copying new installer ... " -ForegroundColor cyan
|
|
|
|
$maxAttempts = 10
|
|
$copied = $false
|
|
|
|
while (-not $copied) {
|
|
|
|
$maxAttempts--
|
|
|
|
Write-Host " > Please wait ... " -NoNewLine
|
|
|
|
if ($maxAttempts -le 0) {
|
|
Write-Host "Couldn't copy new installer :( Please re-download the installer"
|
|
Write-Host ""
|
|
Write-Host "Press [enter] to close ..."
|
|
Read-Host
|
|
exit
|
|
}
|
|
|
|
try {
|
|
Remove-Item $destination -ErrorAction SilentlyContinue
|
|
Copy-Item $source $destination -ErrorAction SilentlyContinue
|
|
}
|
|
catch {
|
|
Write-Host "file locked, retrying ..." -ForegroundColor yellow
|
|
sleep(2)
|
|
continue
|
|
}
|
|
|
|
if (Test-Path $destination) {
|
|
$sLength = (Get-Item $source).Length
|
|
$dLength = (Get-Item $destination).Length
|
|
|
|
if ($sLength -eq $dLength) {
|
|
$copied = $true
|
|
Write-Host "OK" -ForegroundColor green
|
|
break
|
|
}
|
|
|
|
Write-Host "sizes differ, retrying ..." -ForegroundColor yellow
|
|
sleep(2)
|
|
}
|
|
}
|
|
|
|
# remove the new installer from the cache folder after it is copied
|
|
Remove-Item -Path $source
|
|
|
|
Start-Process $destination
|
|
|
|
Write-Host "Done" |