v7.1.1.1
This commit is contained in:
104
src/Tools/update-mpv.ps1
Normal file
104
src/Tools/update-mpv.ps1
Normal file
@@ -0,0 +1,104 @@
|
||||
|
||||
<#
|
||||
|
||||
Updates mpv (x64) and libmpv (x64 , ARM64).
|
||||
|
||||
Files are downloaded from:
|
||||
x64: github.com/zhongfly/mpv-winbuild
|
||||
ARM64: github.com/Andarwinux/mpv-winbuild
|
||||
|
||||
Requires 7zip being installed at 'C:\Program Files\7-Zip\7z.exe'.
|
||||
|
||||
Needs 3 positional CLI arguments:
|
||||
1. Directory where mpv x64 is located. To skip pass '-'.
|
||||
2. Directory where libmpv x64 is located. To skip pass '-'.
|
||||
3. Directory where libmpv ARM64 is located. To skip pass '-'.
|
||||
#>
|
||||
|
||||
$7ZipPath = 'C:\Program Files\7-Zip\7z.exe'
|
||||
|
||||
$MpvDirX64 = $args[0]
|
||||
$LibmpvDirX64 = $args[1]
|
||||
$LibmpvDirARM64 = $args[2]
|
||||
|
||||
# Stop when the first error occurs
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
# Throw exception if file or folder does not exist
|
||||
function Test($path) {
|
||||
if (-not (Test-Path $path)) {
|
||||
throw $path
|
||||
}
|
||||
return $path
|
||||
}
|
||||
|
||||
# Download file to temp dir and return file path
|
||||
function Download($apiURL, $pattern) {
|
||||
$json = Invoke-WebRequest $apiURL -MaximumRedirection 0 -ErrorAction Ignore -UseBasicParsing | ConvertFrom-Json
|
||||
$filename = ($json.assets | Where-Object { $_.name -Match $pattern }).name
|
||||
$path = Join-Path $env:TEMP $filename
|
||||
$link = ($json.assets | Where-Object { $_.name -Match $pattern }).browser_download_url
|
||||
Invoke-WebRequest -Uri $link -UserAgent "mpv-win-updater" -OutFile $path
|
||||
return Test $path
|
||||
}
|
||||
|
||||
# Unpack archive
|
||||
function Unpack($archieveFile, $outputRootDir) {
|
||||
$outputDir = Join-Path $outputRootDir $archieveFile.BaseName
|
||||
if (Test-Path $outputDir) { Remove-Item $outputDir -Recurse }
|
||||
$process = Start-Process (Test $7ZipPath) @('x', $archieveFile.FullName, "-o$outputDir") -NoNewWindow -Wait
|
||||
if ($process.ExitCode) { throw $process.ExitCode }
|
||||
return Test $outputDir
|
||||
}
|
||||
|
||||
# Update mpv x64
|
||||
|
||||
if (Test-Path (Join-Path $MpvDirX64 'mpv.exe')) {
|
||||
$apiURL = "https://api.github.com/repos/zhongfly/mpv-winbuild/releases/latest"
|
||||
$archiveFile = Get-Item (Download $apiURL "mpv-x86_64-[0-9]{8}")
|
||||
$archiveDir = Unpack $archiveFile $env:TEMP
|
||||
Remove-Item "$MpvDirX64\*" -Force -Recurse
|
||||
Copy-Item "$archiveDir\*" $MpvDirX64 -Force -Recurse
|
||||
Remove-Item $archiveFile.FullName
|
||||
Remove-Item $archiveDir -Recurse
|
||||
} else {
|
||||
"mpv x64 location not found:`n$MpvDirX64"
|
||||
}
|
||||
|
||||
# Update libmpv x64
|
||||
|
||||
if (Test-Path (Join-Path $LibmpvDirX64 'libmpv-2.dll')) {
|
||||
$apiURL = "https://api.github.com/repos/zhongfly/mpv-winbuild/releases/latest"
|
||||
$archiveFile = Get-Item (Download $apiURL "mpv-dev-x86_64-[0-9]{8}")
|
||||
$archiveDir = Unpack $archiveFile $env:TEMP
|
||||
Copy-Item $archiveDir\libmpv-2.dll $LibmpvDirX64 -Force
|
||||
Remove-Item $archiveFile.FullName
|
||||
Remove-Item $archiveDir -Recurse
|
||||
} else {
|
||||
"libmpv x64 location not found:`n$LibmpvDirX64"
|
||||
}
|
||||
|
||||
# Update libmpv ARM64
|
||||
|
||||
if (Test-Path (Join-Path $LibmpvDirARM64 'libmpv-2.dll')) {
|
||||
$apiURL = "https://api.github.com/repos/Andarwinux/mpv-winbuild/releases/latest"
|
||||
$archiveFile = Get-Item (Download $apiURL "mpv-dev-aarch64-[0-9]{8}")
|
||||
$archiveDir = Unpack $archiveFile $env:TEMP
|
||||
Copy-Item $archiveDir\libmpv-2.dll $LibmpvDirARM64 -Force
|
||||
Remove-Item $archiveFile.FullName
|
||||
Remove-Item $archiveDir -Recurse
|
||||
} else {
|
||||
"libmpv ARM64 location not found:`n$LibmpvDirARM64"
|
||||
}
|
||||
|
||||
if (Test-Path (Join-Path $MpvDirX64 'mpv.exe')) {
|
||||
Get-Item (Join-Path $MpvDirX64 'mpv.exe')
|
||||
}
|
||||
|
||||
if (Test-Path (Join-Path $LibmpvDirX64 'libmpv-2.dll')) {
|
||||
Get-Item (Join-Path $LibmpvDirX64 'libmpv-2.dll')
|
||||
}
|
||||
|
||||
if (Test-Path (Join-Path $LibmpvDirARM64 'libmpv-2.dll')) {
|
||||
Get-Item (Join-Path $LibmpvDirARM64 'libmpv-2.dll')
|
||||
}
|
||||
Reference in New Issue
Block a user