<# Обновление SumatraPDF с https://github.com/VictorVG/Software, версия скрипта 2018.12.31 Обновляются обе версии x86 и x64 которые находятся в папке со скриптом под именами SumatraPDF.exe и SumatraPDF64.exe. Если SumatraPDF установлен в системе в папку ProgramFiles, обновляется и он (той же разрядности, что и система). #> param( [Parameter()] [Alias('NC')] [switch] $NotCheck, [Parameter()] [Alias('ND')] [switch] $NotDelete ) $checkurl = "https://github.com/VictorVG/Software" $archivelink = "https://raw.githubusercontent.com/VictorVG/Software/master/SumatraPDF.7z" #$archivelink = "https://github.com/VictorVG/Software/raw/master/SumatraPDF.7z" # другая ссылка $commitmask = "SumatraPDF (v\d+\.\d+ Git-[0-9a-z]+)" # патерн для выделения версии из html $sevenzip = "7za.exe" Write-Host "Update SumatraPDF" Write-Host "Check..." # В этой переменной запоминается последний установленный commit $commit = "v3.2 Git-21c252e34" $scriptfile = $MyInvocation.MyCommand.Path $scriptdir = $MyInvocation.MyCommand.Path | Split-Path -Parent $archive = Join-Path $scriptdir ([System.IO.Path]::GetFileName($archivelink)) [System.Net.ServicePointManager]::SecurityProtocol = 'SSL3,TLS,TLS11,TLS12' # для Windows 7 $content = (Invoke-WebRequest -URI $checkurl).content -split "`n" # Ищем последний коммит в строке вида "SumatraPDF v3.2 Git-8cc335188" foreach ($c in $content) { if ($c -match $commitmask) { $release = $Matches[1] Write-Host "Release commit: $release" Write-Host "Current commit: $commit" if ($release -ne $commit -or $NotCheck) { Write-Host "Download $archivelink" Invoke-WebRequest $archivelink -Out $archive if (Test-Path -Lit $archive) { Write-Host "Unpack..." & $sevenzip x -y "-x!*-install.exe" "-o$scriptdir" -- $archive *.exe Get-ChildItem -Lit "$scriptdir" | where {$_.Name -match "SumatraPDF-\d+\.\d+\.exe" } | foreach { Move-Item $_.FullName "SumatraPDF.exe" -Force } Get-ChildItem -Lit "$scriptdir" | where {$_.Name -match "SumatraPDF-\d+\.\d+-x64\.exe" } | foreach { Move-Item $_.FullName "SumatraPDF64.exe" -Force } $dstfile = Join-Path $env:ProgramFiles "SumatraPDF\SumatraPDF.exe" if (Test-Path -Lit $dstfile ) { Write-Host ("Update "+(Join-Path $env:ProgramFiles "SumatraPDF")) if ((Get-CimInstance CIM_Processor).DataWidth -eq 64 ) { Copy-Item -Lit "$scriptdir\SumatraPDF64.exe" $dstfile -Force } else { Copy-Item -Lit "$scriptdir\SumatraPDF.exe" $dstfile -Force } } if (-not $NotDelete) { Remove-Item $archive -Force } } [string[]]$script = Get-Content $scriptfile for ($i=0;$i -lt $script.Length;$i++) { if ($script[$i] -match '^\$commit\s*=') { $script[$i] = '$commit = "'+$release+'"' break } } Set-Content $scriptfile $script -Enc UTF8 Write-Host "Done" } break } } |