Files

157 lines
6.9 KiB
PowerShell

<#
Author: Gabe Kerntke
Date: 07-19-2024
.Synopsis
Script to update Adobe on machines
Checks online for the newest version and will either grab it from the probe if it has it or download it from online and updates to that newest version.
Will update either 64 or 32 bit version(whichever is detected)
Does both Reader and Acrobat Pro versions
.Modified
2024-07-19 (GabeK) - Original script created
2025-07-01 (GabeK) - Updated script to use functions script
2025-07-30 (GabeK) - Updated script to find pro vs standard reader versions
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory = $false)]
$App_Name = "Adobe Acrobat",
[Parameter(Mandatory = $false)]
$File_Name_Extension = "msp",
[Parameter(Mandatory = $false)]
$Install_Parameters = "/quiet /norestart",
[Parameter(Mandatory = $false)]
$EPCache_Folder = "3rd Party Patches\$App_Name"
)
# Define a script block that contains the Invoke-WebRequest command
$scriptBlock = {
(Invoke-WebRequest -UseBasicParsing -Headers @{
"accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
"accept-encoding" = "gzip, deflate, br"
"accept-language" = "en-GB,en;q=0.9,en-US;q=0.8"
} -Uri "https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/index.html#").Links.outerHTML -like "*continuous/*" | Select-Object -First 2 | Select-Object -Last 1
}
#Start a new PowerShell background job and pass the script block to it
$job = Start-Job -ScriptBlock $scriptBlock
#Wait for the job to complete
$timeout = 30
Wait-Job $job -timeout $timeout | Out-Null
#Get the output from the job and display it
$output = Receive-Job $job
$A = $output.Substring(125)
$B = $A.Substring(0, $A.Length - 38)
$Online_Version = $B -replace "[^\d*\.?\d*$/]" , ''
#Gets second half of URL of newest version
$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName = 'powershell.exe'
$psi.Arguments = "(Invoke-WebRequest -UseBasicParsing -Headers @{
'accept'='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
'accept-encoding'='gzip, deflate, br'
'accept-language'='en-GB,en;q=0.9,en-US;q=0.8'
} -Uri 'https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/index.html#').Links.href -like 'continuous/*' | Select-Object -First 1"
$psi.RedirectStandardOutput = $true
$psi.UseShellExecute = $false
$process = [System.Diagnostics.Process]::Start($psi)
$output = $process.StandardOutput.ReadToEnd()
$process.WaitForExit()
#combines the first and second half URLs for latest version's URL
$CombinedURL = "https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/$output"
# Functions #
Function Get-Download_URL {
#gets link
$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName = 'powershell.exe'
$psi.Arguments = "(Invoke-WebRequest -UseBasicParsing -Headers @{
'accept'='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
'accept-encoding'='gzip, deflate, br'
'accept-language'='en-GB,en;q=0.9,en-US;q=0.8'
} -Uri $CombinedURL).Links.href -like '$MSP_File'"
$psi.RedirectStandardOutput = $true
$psi.UseShellExecute = $false
$process = [System.Diagnostics.Process]::Start($psi)
$output = $process.StandardOutput.ReadToEnd()
$process.WaitForExit()
Return $output
}
Function Install-Adobe {
#Get currently installed version
$Local_Version = Get-Software | Where-Object { $_.DisplayName -like "*$App_Name*" } | Select-Object -ExpandProperty DisplayVersion
. "C:\Temp\Script Cache\Functions.ps1"
#Comparing version already installed to what is online
If ([version]$Local_Version -lt [version]$Online_Version) {
Test-Probe_Online
Close-App
Install-App
}
Else { Write-Host "$App_Name already on latest version (Installed version: $Local_Version)" }
}
#Region Script Start
If ((Test-Path "C:\Temp\Script Cache") -eq $False) { New-Item -ItemType directory -Path "C:\Temp\Script Cache" }
Invoke-WebRequest -UseBasicParsing "https://scripts.gabesville.com/Gabesville/Powershell-Scripts/raw/branch/main/Functions%20Scripts/Functions.ps1" -outfile "C:\Temp\Script Cache\Functions.ps1"
. "C:\Temp\Script Cache\Functions.ps1"
#Check to see if program is installed
$Applist = Get-Software | Sort-Object -Descending
If ($Applist.DisplayName -like "*$App_Name*64-bit*") {
$SCAPackageLevel = Get-ItemProperty -Path "HKLM:\SOFTWARE\Adobe\Adobe Acrobat\DC\Installer\" -Name "SCAPackageLevel" | Select-Object -ExpandProperty SCAPackageLevel
$InstallPathx64 = "C:\Program Files\Adobe\Acrobat DC\Acrobat"
If ($SCAPackageLevel -eq 1) {
Write-Host "Adobe Reader is installed, SCAPackageLevel=$SCAPackageLevel"
If (Test-Path "$InstallPathx64\ReaderMenuCoreApp.msix") {
Write-Host "Adobe Reader verified via path."
$File_Name_Prefix = "Adobe-Reader-x64"
$File_Name = "$File_Name_Prefix-$Online_Version.$File_Name_Extension"
$MSP_File = "*AcroRdrDCx64*_MUI.msp"
$DownloadURL = Get-Download_URL
Install-Adobe
}
}
ElseIf ($SCAPackageLevel -ne 1) {
Write-Host "Adobe Acrobat Pro is installed, SCAPackageLevel=$SCAPackageLevel"
If (Test-Path "$InstallPathx64\AcrobatMenuCoreApp.msix") {
Write-Host "Adobe Acrobat Pro verified via path."
$File_Name_Prefix = "Adobe-Acrobat-x64"
$File_Name = "$File_Name_Prefix-$Online_Version.$File_Name_Extension"
$MSP_File = '*AcrobatDCx64*'
$DownloadURL = Get-Download_URL
Install-Adobe
}
}
}
Elseif ($Applist.DisplayName -like "$App_Name*") {
$InstallPathx32 = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader"
#Test-Path "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
If (Test-Path "$InstallPathx32\ReaderMenuCoreApp.msix") {
Write-Host "Adobe Reader installed, verified via path."
$File_Name_Prefix = "Adobe-Reader-x32"
$File_Name = "$File_Name_Prefix-$Online_Version.$File_Name_Extension"
$MSP_File = "*AcroRdrDCUpd*_MUI.msp"
$DownloadURL = Get-Download_URL
Install-Adobe
}
ElseIf (Test-Path "$InstallPathx32\AcrobatMenuCoreApp.msix") {
Write-Host "Adobe Acrobat Pro installed, verified via path."
$File_Name_Prefix = "Adobe-Acrobat-x32"
$File_Name = "$File_Name_Prefix-$Online_Version.$File_Name_Extension"
$MSP_File = '*AcrobatDCUpd*'
$DownloadURL = Get-Download_URL
Install-Adobe
}
}
Else { Write-Host "$App_Name not installed, exiting script" }
#Region Script End