mirror of
https://github.com/SpotX-Official/SpotX.git
synced 2026-04-11 17:37:21 +10:00
fix: use uninstall.exe for new Spotify versions and restore curl progress
This commit is contained in:
90
run.ps1
90
run.ps1
@@ -322,6 +322,7 @@ if ($SpotifyPath) {
|
|||||||
$spotifyDirectory = $SpotifyPath
|
$spotifyDirectory = $SpotifyPath
|
||||||
}
|
}
|
||||||
$spotifyExecutable = Join-Path $spotifyDirectory 'Spotify.exe'
|
$spotifyExecutable = Join-Path $spotifyDirectory 'Spotify.exe'
|
||||||
|
$spotifyUninstaller = Join-Path $spotifyDirectory 'uninstall.exe'
|
||||||
$spotifyDll = Join-Path $spotifyDirectory 'Spotify.dll'
|
$spotifyDll = Join-Path $spotifyDirectory 'Spotify.dll'
|
||||||
$chrome_elf = Join-Path $spotifyDirectory 'chrome_elf.dll'
|
$chrome_elf = Join-Path $spotifyDirectory 'chrome_elf.dll'
|
||||||
$exe_bak = Join-Path $spotifyDirectory 'Spotify.bak'
|
$exe_bak = Join-Path $spotifyDirectory 'Spotify.bak'
|
||||||
@@ -599,6 +600,75 @@ function Unlock-Folder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Invoke-SpotifyUninstall {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$InstalledVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
$installedVersionObject = [version]$InstalledVersion
|
||||||
|
|
||||||
|
if ($installedVersionObject -ge [version]'1.2.84.476') {
|
||||||
|
if (-not (Test-Path -LiteralPath $spotifyUninstaller)) {
|
||||||
|
Write-Host "ERROR: " -ForegroundColor Red -NoNewline
|
||||||
|
Write-Host ("Spotify uninstall.exe was not found for version {0}. Aborting reinstall" -f $InstalledVersion) -ForegroundColor White
|
||||||
|
Stop-Script
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$launcher = Start-Process -FilePath $spotifyUninstaller `
|
||||||
|
-ArgumentList '/silent' `
|
||||||
|
-PassThru `
|
||||||
|
-WindowStyle Hidden `
|
||||||
|
-ErrorAction Stop
|
||||||
|
|
||||||
|
$launcher.WaitForExit()
|
||||||
|
|
||||||
|
$pollIntervalMs = 200
|
||||||
|
$pollMaxMs = 10000
|
||||||
|
$elapsedMs = 0
|
||||||
|
|
||||||
|
while ($elapsedMs -lt $pollMaxMs) {
|
||||||
|
$uninstallProcess = Get-Process -Name SpotifyUninstall -ErrorAction SilentlyContinue | Select-Object -First 1
|
||||||
|
if ($uninstallProcess) {
|
||||||
|
Wait-Process -Name SpotifyUninstall -ErrorAction SilentlyContinue
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $spotifyExecutable) -or -not (Test-Path -LiteralPath $spotifyDirectory)) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Sleep -Milliseconds $pollIntervalMs
|
||||||
|
$elapsedMs += $pollIntervalMs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host "ERROR: " -ForegroundColor Red -NoNewline
|
||||||
|
Write-Host ("Failed to launch Spotify uninstaller for version {0}. {1}" -f $InstalledVersion, $_.Exception.Message) -ForegroundColor White
|
||||||
|
Stop-Script
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cmd /c $spotifyExecutable /UNINSTALL /SILENT
|
||||||
|
Wait-Process -Name SpotifyUninstall
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Sleep -Milliseconds 200
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $spotifyDirectory) { Remove-Item -Recurse -Force -LiteralPath $spotifyDirectory -ErrorAction SilentlyContinue }
|
||||||
|
if (Test-Path -LiteralPath $spotifyDirectory2) { Remove-Item -Recurse -Force -LiteralPath $spotifyDirectory2 -ErrorAction SilentlyContinue }
|
||||||
|
if (Test-Path -LiteralPath $spotifyUninstall) { Remove-Item -Recurse -Force -LiteralPath $spotifyUninstall -ErrorAction SilentlyContinue }
|
||||||
|
|
||||||
|
$spotifyRemoved = (-not (Test-Path -LiteralPath $spotifyExecutable)) -or (-not (Test-Path -LiteralPath $spotifyDirectory))
|
||||||
|
if (-not $spotifyRemoved) {
|
||||||
|
Write-Host "ERROR: " -ForegroundColor Red -NoNewline
|
||||||
|
Write-Host ("Spotify uninstall failed for version {0}. Spotify is still installed" -f $InstalledVersion) -ForegroundColor White
|
||||||
|
Stop-Script
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function Mod-F {
|
function Mod-F {
|
||||||
param(
|
param(
|
||||||
[string] $template,
|
[string] $template,
|
||||||
@@ -990,8 +1060,7 @@ function Invoke-SpotifyDownloadAttempt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$curlFailOption = if ($script:curlSupportsFailWithBody) { '--fail-with-body' } else { '--fail' }
|
$curlFailOption = if ($script:curlSupportsFailWithBody) { '--fail-with-body' } else { '--fail' }
|
||||||
$curlOutput = $null
|
$curlOutput = & curl.exe `
|
||||||
$null = & curl.exe `
|
|
||||||
-q `
|
-q `
|
||||||
-L `
|
-L `
|
||||||
-k `
|
-k `
|
||||||
@@ -1001,8 +1070,7 @@ function Invoke-SpotifyDownloadAttempt {
|
|||||||
--progress-bar `
|
--progress-bar `
|
||||||
-o $DestinationPath `
|
-o $DestinationPath `
|
||||||
-w "`nHTTP_STATUS:%{http_code}`n" `
|
-w "`nHTTP_STATUS:%{http_code}`n" `
|
||||||
$Url `
|
$Url
|
||||||
2>&1 | Tee-Object -Variable curlOutput | Out-Host
|
|
||||||
$curlExitCode = $LASTEXITCODE
|
$curlExitCode = $LASTEXITCODE
|
||||||
|
|
||||||
$curlOutputText = Convert-CommandOutputToString -Output $curlOutput
|
$curlOutputText = Convert-CommandOutputToString -Output $curlOutput
|
||||||
@@ -1391,12 +1459,7 @@ if ($spotifyInstalled) {
|
|||||||
if ($ch -eq 'y') {
|
if ($ch -eq 'y') {
|
||||||
Write-Host ($lang).DelOld`n
|
Write-Host ($lang).DelOld`n
|
||||||
$null = Unlock-Folder
|
$null = Unlock-Folder
|
||||||
cmd /c $spotifyExecutable /UNINSTALL /SILENT
|
Invoke-SpotifyUninstall -InstalledVersion $offline
|
||||||
wait-process -name SpotifyUninstall
|
|
||||||
Start-Sleep -Milliseconds 200
|
|
||||||
if (Test-Path $spotifyDirectory) { Remove-Item -Recurse -Force -LiteralPath $spotifyDirectory }
|
|
||||||
if (Test-Path $spotifyDirectory2) { Remove-Item -Recurse -Force -LiteralPath $spotifyDirectory2 }
|
|
||||||
if (Test-Path $spotifyUninstall ) { Remove-Item -Recurse -Force -LiteralPath $spotifyUninstall }
|
|
||||||
}
|
}
|
||||||
if ($ch -eq 'n') { $ch = $null }
|
if ($ch -eq 'n') { $ch = $null }
|
||||||
}
|
}
|
||||||
@@ -1457,12 +1520,7 @@ if ($spotifyInstalled) {
|
|||||||
if ($ch -eq 'y') {
|
if ($ch -eq 'y') {
|
||||||
Write-Host ($lang).DelNew`n
|
Write-Host ($lang).DelNew`n
|
||||||
$null = Unlock-Folder
|
$null = Unlock-Folder
|
||||||
cmd /c $spotifyExecutable /UNINSTALL /SILENT
|
Invoke-SpotifyUninstall -InstalledVersion $offline
|
||||||
wait-process -name SpotifyUninstall
|
|
||||||
Start-Sleep -Milliseconds 200
|
|
||||||
if (Test-Path $spotifyDirectory) { Remove-Item -Recurse -Force -LiteralPath $spotifyDirectory }
|
|
||||||
if (Test-Path $spotifyDirectory2) { Remove-Item -Recurse -Force -LiteralPath $spotifyDirectory2 }
|
|
||||||
if (Test-Path $spotifyUninstall ) { Remove-Item -Recurse -Force -LiteralPath $spotifyUninstall }
|
|
||||||
}
|
}
|
||||||
if ($ch -eq 'n') { $ch = $null }
|
if ($ch -eq 'n') { $ch = $null }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user