powershell_check_for_updates
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| powershell_check_for_updates [2013/11/20 07:46] – stephen | powershell_check_for_updates [2017/02/07 21:27] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| #### Check for updates | #### Check for updates | ||
| - | #### Version 1.2 | + | #### Version 1.36 |
| - | #### Last updated | + | #### Last updated |
| - | #### The cononical | + | #### The canonical |
| + | |||
| $appsToCheck = @{ | $appsToCheck = @{ | ||
| - | 'TrueCrypt' | + | 'Dummy' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | # ; ' |
| - | ; ' | + | # ; ' |
| - | # | + | ; ' |
| - | ; ' | + | # ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | # ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | # ; ' |
| - | ; ' | + | ; ' |
| - | ; ' | + | # ; ' |
| + | # ; ' | ||
| + | ; ' | ||
| + | # ; ' | ||
| + | # ; ' | ||
| + | # ; ' | ||
| + | # ; ' | ||
| + | # ; ' | ||
| } | } | ||
| + | function WebRequest ($url) { | ||
| + | [net.httpwebrequest]$httpwebrequest = [net.webrequest]:: | ||
| + | [net.httpWebResponse]$httpwebresponse = $httpwebrequest.getResponse() | ||
| + | |||
| + | if (!$httpwebresponse) { | ||
| + | return $null | ||
| + | } | ||
| + | |||
| + | $reader = new-object IO.StreamReader($httpwebresponse.getResponseStream()) | ||
| + | $WSResponse = $reader.ReadToEnd() | ||
| + | $reader.Close() | ||
| + | |||
| + | return $WSResponse | ||
| + | } | ||
| + | |||
| + | function WebRequest ($url) { | ||
| + | [net.httpwebrequest]$httpwebrequest = [net.webrequest]:: | ||
| + | [net.httpWebResponse]$httpwebresponse = $httpwebrequest.getResponse() | ||
| + | |||
| + | if (!$httpwebresponse) { | ||
| + | return $null | ||
| + | } | ||
| + | |||
| + | $reader = new-object IO.StreamReader($httpwebresponse.getResponseStream()) | ||
| + | $WSResponse = $reader.ReadToEnd() | ||
| + | $reader.Close() | ||
| + | |||
| + | return $WSResponse | ||
| + | } | ||
| + | |||
| function GetVersionNumberFromWeb ($appName, $url, $regexPattern) | function GetVersionNumberFromWeb ($appName, $url, $regexPattern) | ||
| { | { | ||
| - | $response = Invoke-WebRequest | + | $response = WebRequest $url |
| - | + | ||
| - | if ($response.StatusCode -ne 200) | + | if (!$response) { |
| - | | + | |
| Write-Host " | Write-Host " | ||
| - | Write-Host " | ||
| return | return | ||
| } | } | ||
| - | + | ||
| - | $versionNumberMatches = ([regex]$regexPattern).matches($response.Content) | + | Out-File -filepath (Join-path $env:temp " |
| - | + | ||
| - | if ($versionNumberMatches.Count -eq 0) | + | if ($regexPattern.EndsWith('/ |
| - | | + | # Use a bit of a hack to get singleline mode. |
| + | $regexPattern = $regexPattern.Substring(0, | ||
| + | $response = $response.Replace(" | ||
| + | } | ||
| + | |||
| + | $versionNumberMatches = ([regex]$regexPattern).matches($response) | ||
| + | |||
| + | if ($versionNumberMatches.Count -eq 0) { | ||
| Write-Host " | Write-Host " | ||
| return | return | ||
| } | } | ||
| - | if ($versionNumberMatches.Count -ne 1) | + | if ($versionNumberMatches.Count -ne 1) { |
| - | | + | |
| Write-Host " | Write-Host " | ||
| return | return | ||
| } | } | ||
| - | if (! $versionNumberMatches[0].Success) | + | if (! $versionNumberMatches[0].Success) { |
| - | | + | |
| Write-Host " | Write-Host " | ||
| return | return | ||
| } | } | ||
| - | if (! $versionNumberMatches[0].Groups[" | + | if (! $versionNumberMatches[0].Groups[" |
| - | | + | |
| Write-Host " | Write-Host " | ||
| return | return | ||
| } | } | ||
| + | |||
| $latestVersionNumber = $versionNumberMatches[0].Groups[" | $latestVersionNumber = $versionNumberMatches[0].Groups[" | ||
| Write-Host " | Write-Host " | ||
| + | |||
| return $latestVersionNumber | return $latestVersionNumber | ||
| } | } | ||
| - | + | ||
| function CheckLocalFile ($appName, $url, $regexPattern, | function CheckLocalFile ($appName, $url, $regexPattern, | ||
| { | { | ||
| - | $appInfo = Get-Command $localFilename | + | |
| + | $fullLocalFilename = $localFilename | ||
| + | } elseif (Test-Path " | ||
| + | $fullLocalFilename = " | ||
| + | } elseif (Test-Path " | ||
| + | $fullLocalFilename = " | ||
| + | } else { | ||
| + | Write-Host " | ||
| + | return | ||
| + | } | ||
| + | |||
| + | | ||
| $currentVersionNumber = $appInfo.FileVersionInfo.ProductVersion | $currentVersionNumber = $appInfo.FileVersionInfo.ProductVersion | ||
| + | |||
| if ($extraFormatting.Contains('; | if ($extraFormatting.Contains('; | ||
| { | { | ||
| Line 84: | Line 133: | ||
| { | { | ||
| $currentVersionNumber = $currentVersionNumber.Replace(' | $currentVersionNumber = $currentVersionNumber.Replace(' | ||
| + | } | ||
| + | if ($extraFormatting.Contains('; | ||
| + | { | ||
| + | $currentVersionNumber = $currentVersionNumber.Substring(0, | ||
| } | } | ||
| if ($extraFormatting.Contains('; | if ($extraFormatting.Contains('; | ||
| + | { | ||
| + | $currentVersionNumber = $currentVersionNumber.Substring(0, | ||
| + | } | ||
| + | while ($extraFormatting.Contains('; | ||
| { | { | ||
| $currentVersionNumber = $currentVersionNumber.Substring(0, | $currentVersionNumber = $currentVersionNumber.Substring(0, | ||
| Line 98: | Line 155: | ||
| $currentVersionNumber = $Matches.Values | $currentVersionNumber = $Matches.Values | ||
| } | } | ||
| + | |||
| CheckCurrentVersionNumber $appName $url $regexPattern $currentVersionNumber | CheckCurrentVersionNumber $appName $url $regexPattern $currentVersionNumber | ||
| } | } | ||
| + | |||
| function CheckCurrentVersionNumber ($appName, $url, $regexPattern, | function CheckCurrentVersionNumber ($appName, $url, $regexPattern, | ||
| { | { | ||
| $latestVersionNumber = GetVersionNumberFromWeb $appName $url $regexPattern | $latestVersionNumber = GetVersionNumberFromWeb $appName $url $regexPattern | ||
| - | if (! $latestVersionNumber) | + | if (! $latestVersionNumber) { |
| - | | + | |
| return | return | ||
| - | } | + | } |
| - | + | ||
| Write-Host " | Write-Host " | ||
| - | + | ||
| - | if ($currentVersionNumber -ne $latestVersionNumber) | + | if ($currentVersionNumber -ne $latestVersionNumber) { |
| - | | + | |
| Write-Host " | Write-Host " | ||
| - | } | + | } else { |
| - | | + | |
| - | | + | |
| Write-Host " | Write-Host " | ||
| } | } | ||
| } | } | ||
| + | |||
| function CheckAppCurrentVersionNumber ($appName) | function CheckAppCurrentVersionNumber ($appName) | ||
| { | { | ||
| switch ($appName) | switch ($appName) | ||
| { | { | ||
| + | ' | ||
| #### Semi-automatic checks #### | #### Semi-automatic checks #### | ||
| - | 'TrueCrypt' | + | 'ThisScript' |
| { | { | ||
| - | CheckCurrentVersionNumber 'TrueCrypt' ' | + | CheckCurrentVersionNumber 'ThisScript' ' |
| - | '\>Latest Stable | + | '>#### Version (?< |
| - | $appsToCheck[' | + | $appsToCheck[' |
| } | } | ||
| ' | ' | ||
| { | { | ||
| CheckCurrentVersionNumber ' | CheckCurrentVersionNumber ' | ||
| - | 'href=" | + | '> |
| $appsToCheck[' | $appsToCheck[' | ||
| } | } | ||
| ' | ' | ||
| { | { | ||
| - | CheckCurrentVersionNumber ' | + | CheckCurrentVersionNumber ' |
| - | 'ConEmu | + | '\[ConEmu_Preview_2\]\s*version=(?< |
| $appsToCheck[' | $appsToCheck[' | ||
| } | } | ||
| Line 149: | Line 202: | ||
| { | { | ||
| CheckCurrentVersionNumber ' | CheckCurrentVersionNumber ' | ||
| - | '>Paint\.NET\s*v(?< | + | '>paint\.net\s*(?< |
| $appsToCheck[' | $appsToCheck[' | ||
| } | } | ||
| Line 166: | Line 219: | ||
| ' | ' | ||
| { | { | ||
| - | CheckCurrentVersionNumber ' | + | CheckCurrentVersionNumber ' |
| - | '<title>Notepad\+\+ v(?< | + | '>Current Version:\s*(?:<\w+>\s*)*(?< |
| $appsToCheck[' | $appsToCheck[' | ||
| } | } | ||
| + | ' | ||
| + | { | ||
| + | CheckCurrentVersionNumber ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckCurrentVersionNumber ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckCurrentVersionNumber ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckCurrentVersionNumber ' | ||
| + | ' | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | |||
| #### Fully-automatic checks #### | #### Fully-automatic checks #### | ||
| ' | ' | ||
| { | { | ||
| CheckLocalFile ' | CheckLocalFile ' | ||
| - | 'href=" | + | '>The current stable release of GIMP is < |
| $appsToCheck[' | $appsToCheck[' | ||
| } | } | ||
| Line 192: | Line 270: | ||
| { | { | ||
| CheckLocalFile ' | CheckLocalFile ' | ||
| - | ' | + | ' |
| $appsToCheck[' | $appsToCheck[' | ||
| '; | '; | ||
| Line 198: | Line 276: | ||
| ' | ' | ||
| { | { | ||
| - | CheckLocalFile ' | + | CheckLocalFile ' |
| - | '\<p id=" | + | '<title>\s*Chocolatey\s+Gallery\s*\|\s*Fiddler\s*(?< |
| - | $appsToCheck[' | + | $appsToCheck[' |
| + | | ||
| } | } | ||
| ' | ' | ||
| Line 212: | Line 291: | ||
| CheckLocalFile ' | CheckLocalFile ' | ||
| '< | '< | ||
| - | $appsToCheck[' | + | $appsToCheck[' |
| } | } | ||
| # Next time the version changes, try using this rather than the Semi-automatic check. | # Next time the version changes, try using this rather than the Semi-automatic check. | ||
| Line 231: | Line 310: | ||
| { | { | ||
| CheckLocalFile ' | CheckLocalFile ' | ||
| - | '> | + | '> |
| $appsToCheck[' | $appsToCheck[' | ||
| '; | '; | ||
| Line 246: | Line 325: | ||
| '> | '> | ||
| $appsToCheck[' | $appsToCheck[' | ||
| + | '; | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | '; | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | '; | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | ' | ||
| + | $appsToCheck[' | ||
| + | '; | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | '; | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | ' | ||
| + | $appsToCheck[' | ||
| + | '; | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | '> | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | ' | ||
| + | $appsToCheck[' | ||
| + | } | ||
| + | ' | ||
| + | { | ||
| + | CheckLocalFile ' | ||
| + | ' | ||
| + | $appsToCheck[' | ||
| '; | '; | ||
| } | } | ||
| Line 254: | Line 393: | ||
| } | } | ||
| } | } | ||
| + | |||
| + | cls | ||
| foreach ($appName in $AppsToCheck.Keys) { CheckAppCurrentVersionNumber ($appName) } | foreach ($appName in $AppsToCheck.Keys) { CheckAppCurrentVersionNumber ($appName) } | ||
| - | + | # | |
| - | Write-Host "Press any key to exit." | + | |
| - | $null = $Host.UI.RawUI.ReadKey(" | + | |
| </ | </ | ||
powershell_check_for_updates.1384933561.txt.gz · Last modified: 2017/01/01 19:51 (external edit)
