Hi, yes you are correct @That-Annoying-Guy Intune does have a timeout period, and deploying most of the
dobe Creative Cloud applications usually hit this time limitation as the installs are GB’s in size.
our mitigation is to package each Creative Cloud app (Photoshop, Premiere Pro, InDesign, Media Encoder, Bridge etc… separately) and create the dependencies within the Intune deployments this allows each app to download and install one at a time and stands a much better chance of landing without hitting the timeout issue - Sadly you do end up with a lot of packages in the Adobe Adminconsole
.
I wish Adobe’s larger software packages (Premiere Pro & Photoshop for example) were chunked into smaller components so you could choose what to install, and new versions would only update the changes.
As a side note @Franga it’s worth looking at using a Proactive Remediation (PR) in Intune to keep Adobe applications upto date. If you have an existing version of an Adobe Creative Cloud App installed, (and have chosen to deploy the Remote update manager with the Creative Cloud App) it is quite easy to call Adobe’s Remote Update Manager (aka RUM) to check for and update existing versions (Note: RUM can not be used to Upgrade to a new full version of a product (2022 to 2023 for example), but can be used to update existing in year updates) - we use this very effectively to fix security issues.
In fact, here is the PR scripts I wrote (I’m no Powershell expert, but it works
), I run these daily and are targetted at all users that have Adobe Creative Cloud installed
Settings:
N.B. This makes the assumption your RemoteUpdateManager.exe is located in the default path:
"C:\Program Files (x86)\Common Files\Adobe\OOBE_Enterprise\RemoteUpdateManager\RemoteUpdateManager.exe"
Detection script:
<#
===============================
| Detect-AdobeCCUpdates.ps1 |
===============================
Detects if any Adobe Creative Cloud Apps require an update installing, by using Adobe Remote Update Manager (RUM).
Returns (1) if required updates are found, and (0) if not
Used in Proactive Remediation "SW-Update_CCApps"
This script must be run in the SYSTEM context (as RUM requires Admin priviledges to successfully run)
---------------------------------------------------------------
Sample Output from a machine requiring updates:
RemoteUpdateManager version is : 3.0.0.8
Starting the RemoteUpdateManager...
Following Updates are applicable on the system :
(KBRG/13.0.3.693/win64)
(ILST/27.4.0.669/win64)
(COSY/6.4.0.12/win32)
(CCXP/4.14.2.2/win32)
**************************************************
RemoteUpdateManager exiting with Return Code (0)
---------------------------------------------------------------
Adrian Scott
29th March 2023
2023-03-29 Initial script to test if any Adobe Creative Cloud apps require updating
#>
#region functions
#endregion
#region Config
$AppName = "Detect-CCUpdates"
$OrgName = "MyCompany"
$LogPath = "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs"
$LogFile = "$LogPath\$($OrgName)-$($AppName).log"
# Set the path to the Adobe Remote Update Manager executable
$ARUMPath = "C:\Program Files (x86)\Common Files\Adobe\OOBE_Enterprise\RemoteUpdateManager\RemoteUpdateManager.exe"
# Define Latest Version of Adobe RUM executable
[version]$LatestVersion = "3.0.0.8"
# Define the search pattern to match in the output
$updatesrequired = "Following Updates are applicable on the system"
# Define the regex pattern to match Sap Codes, version numbers, and platforms
$regexpattern = '\((\w+)\/([\d\.]+)\/(win\d+)\)'
# Define a hash table of all product names for each Sap Code (sorted by Sap Code)
# N.B. Sap codes obtained from various Internet sources
$productNames = @{
"AAM" = "Application Manager"
"ACR" = "Camera Raw"
"AEFT" = "After Effects"
"AICY" = "InCopy"
"AME" = "Media Encoder"
"ANML" = "Character Animator"
"APRO" = "Acrobat DC"
"ASCT" = "Scout"
"AUDT" = "Audition"
"CCXP" = "Creative Cloud Experience"
"CDEC" = "Codecs"
"CHAR" = "Character Animator"
"COCM" = "STI_ColorCommonSet_CMYK_HD"
"COMP" = "STI_Color_MotionPicture_HD"
"COPS" = "STI_Color_Photoshop_HD"
"CORE" = "STI_Color_HD"
"CORG" = "STI_Color_CommonSetRGB_HD"
"COSY" = "CoreSync"
"CPAS" = "Captivate Assets"
"CPTL" = "Presenter"
"CPTV" = "Captivate"
"CPVC" = "Captivate Voices"
"DIST" = "Acrobat Distiller"
"DOTN" = "Microsoft Dot Net Framework"
"DRWV" = "Dreamweaver"
"EORG" = "Elements Organiser"
"ESHR" = "Dimension"
"FLBR" = "Flash Builder Premium"
"FLPR" = "Animate and Mobile Device Packaging"
"FM" = "FrameMaker"
"FMDN" = "Microsoft Dot Net Framework"
"FRSC" = "Fresco"
"FUSE" = "FUSE"
"FWKS" = "Fireworks"
"GSDK" = "Gaming SDK"
"HPRE" = "Premiere Elements Home Screen"
"HPSE" = "Photoshop Elements Home Screen"
"IDSN" = "InDesign"
"ILST" = "Illustrator"
"KANC" = "Notification Client"
"KASU" = "HD_ASU"
"KBRG" = "Bridge"
"KCCC" = "Creative Cloud"
"KEMN" = "Extension Manager"
"KETK" = "Extendscript Toolkit"
"KFNT" = "Fonts"
"LIBS" = "Library"
"LRCC" = "Lightroom"
"LTRM" = "Lightroom Classic"
"MSXML" = "MSXML 6 Framework"
"MUSE" = "MUSE"
"PHSP" = "Photoshop"
"PPRO" = "Premiere Pro"
"PRE" = "Premiere Elements"
"PRLD" = "Prelude"
"PSE" = "Photoshop Elements"
"PSTI" = "Preview"
"PVX" = "Presenter Video Express"
"RBHP" = "RoboHelp"
"RUSH" = "Premiere Rush"
"SBSTA" = "Substance Sampler"
"SBSTD" = "Substance Designer"
"SBSTP" = "Substance Painter"
"SPGD" = "SpeedGrade"
"SPRK" = "XD"
"STGR" = "Substance Stager"
"TAPI" = "Touch App Plugins"
}
#endregion
#region Main process
if (!(Test-Path $LogPath)) {mkdir $LogPath -Force | Out-Null}
Start-Transcript -Path $LogFile -Force
try {
if (Test-Path -Path $ARUMPath) {
# Determine version of RUM installed
[version]$InstalledVersion = (Get-ItemProperty $ARUMPath).VersionInfo.FileVersion
# Run Adobe Remote Update Manager and capture its output
$ARUMOutput = (& "$ARUMPath" --action=list) 2>&1 | Out-String
# Use regex to find the app codes, version numbers, and platforms in the text string
$discoveries = [regex]::Matches($ARUMOutput, $regexpattern)
# Create an array to store the results
$results = @()
# Loop through the regex matches and add a row to the results array for each app
foreach ($discovered in $discoveries) {
$SapCode = $discovered.Groups[1].Value
$versionNumber = $discovered.Groups[2].Value
#$platform = $discovered.Groups[3].Value
$productName = $productNames[$SapCode]
<#
# Add a row to the results array
$results += [pscustomobject]@{
"Product Name" = $productName
"Sap Code" = $SapCode
"Version Number" = $versionNumber
"Platform Architecture" = $platform
}
#>
$results += "$($productName) ($($SapCode)) (v$($versionNumber))"
}
# Convert $results array to a string and join each line with a comma (so content can be output in PR results)
$resultsstring = (($results -join ", " ) -replace "`r`n", ", ").Trim()
# Search the output for the string
$ARUMStatus = $ARUMOutput | ForEach-Object {"$_" | Select-String -Pattern $updatesrequired}
if ($ARUMStatus.Matches.Success -eq "True") {
# proceed to remediation script
If ($InstalledVersion -ge $LatestVersion){
Write-Output "$($results.count) updates are required for the following Adobe Creative Cloud Apps: $($resultsstring)"
exit 1 # Return a non-zero exit code to trigger the remediation
} else {
Write-Output "$($results.count) updates are required for the following Adobe Creative Cloud Apps: $($resultsstring) N.B. Adobe RUM is not the latest version ($($LatestVersion)), the version on this machine ($($InstalledVersion)) should be updated"
exit 1 # Return a non-zero exit code to trigger the remediation
}
} else {
# nothing further to do
If ($InstalledVersion -ge $LatestVersion){
Write-Output "No updates are required for Adobe Creative Cloud Apps"
exit 0 # Return a zero exit code to indicate success
} else {
Write-Output "No updates are required for Adobe Creative Cloud Apps. N.B. Adobe RUM is not the latest version ($($LatestVersion)), the version on this machine ($($InstalledVersion)) should be updated"
exit 0 # Return a zero exit code to indicate success
}
}
} else {
Write-Output "Adobe RUM not found N.B. Check if RUM should exist on this device"
exit 0
}
} catch {
$errorMsg = $_.Exception.Message
} finally {
if ($errorMsg) {
Write-Output "Something went wrong: $errorMsg"
Stop-Transcript | Out-Null
Throw $errorMsg
} else {
# Write-Output "No errors detected"
Stop-Transcript | Out-Null
}
}
#endregion
Remediation script:
<#
==================================
| Remediate-AdobeCCUpdates.ps1 |
==================================
Remediates any Adobe Creative Cloud Apps where an update is required, by using Adobe Remote Update Manager (RUM).
Used in Proactive Remediation "SW-Update_CCApps"
This script must be run in the SYSTEM context (as RUM requires Admin priviledges to successfully run)
---------------------------------------------------------------
Sample Detection Output from a machine requiring updates:
RemoteUpdateManager version is : 3.0.0.8
Starting the RemoteUpdateManager...
Following Updates are applicable on the system :
(KBRG/13.0.3.693/win64)
(ILST/27.4.0.669/win64)
(COSY/6.4.0.12/win32)
(CCXP/4.14.2.2/win32)
**************************************************
RemoteUpdateManager exiting with Return Code (0)
---------------------------------------------------------------
Adrian Scott
3rd April 2023
2023-04-03 Initial script to update any Adobe Creative Cloud apps where updates are required
#>
#region functions
#endregion
#region Config
$AppName = "Remediate-CCUpdates"
$OrgName = "MyCompany"
$LogPath = "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs"
$LogFile = "$LogPath\$($OrgName)-$($AppName).log"
# Set the path to the Adobe Remote Update Manager executable
$ARUMPath = "C:\Program Files (x86)\Common Files\Adobe\OOBE_Enterprise\RemoteUpdateManager\RemoteUpdateManager.exe"
# Define the search pattern to match in the output
$updatesinstalled = "Following Updates were successfully installed"
# Define the regex pattern to match Sap Codes, version numbers, and platforms
$regexpattern = '\((\w+)\/([\d\.]+)\/(win\d+)\)'
# Define a hash table of all product names for each Sap Code (sorted by Sap Code)
$productNames = @{
"AAM" = "Application Manager"
"ACR" = "Camera Raw"
"AEFT" = "After Effects"
"AICY" = "InCopy"
"AME" = "Media Encoder"
"ANML" = "Character Animator"
"APRO" = "Acrobat DC"
"ASCT" = "Scout"
"AUDT" = "Audition"
"CCXP" = "Creative Cloud Experience"
"CDEC" = "Codecs"
"CHAR" = "Character Animator"
"COCM" = "STI_ColorCommonSet_CMYK_HD"
"COMP" = "STI_Color_MotionPicture_HD"
"COPS" = "STI_Color_Photoshop_HD"
"CORE" = "STI_Color_HD"
"CORG" = "STI_Color_CommonSetRGB_HD"
"COSY" = "CoreSync"
"CPAS" = "Captivate Assets"
"CPTL" = "Presenter"
"CPTV" = "Captivate"
"CPVC" = "Captivate Voices"
"DIST" = "Acrobat Distiller"
"DOTN" = "Microsoft Dot Net Framework"
"DRWV" = "Dreamweaver"
"EORG" = "Elements Organiser"
"ESHR" = "Dimension"
"FLBR" = "Flash Builder Premium"
"FLPR" = "Animate and Mobile Device Packaging"
"FM" = "FrameMaker"
"FMDN" = "Microsoft Dot Net Framework"
"FRSC" = "Fresco"
"FUSE" = "FUSE"
"FWKS" = "Fireworks"
"GSDK" = "Gaming SDK"
"HPRE" = "Premiere Elements Home Screen"
"HPSE" = "Photoshop Elements Home Screen"
"IDSN" = "InDesign"
"ILST" = "Illustrator"
"KANC" = "Notification Client"
"KASU" = "HD_ASU"
"KBRG" = "Bridge"
"KCCC" = "Creative Cloud"
"KEMN" = "Extension Manager"
"KETK" = "Extendscript Toolkit"
"KFNT" = "Fonts"
"LIBS" = "Library"
"LRCC" = "Lightroom"
"LTRM" = "Lightroom Classic"
"MSXML" = "MSXML 6 Framework"
"MUSE" = "MUSE"
"PHSP" = "Photoshop"
"PPRO" = "Premiere Pro"
"PRE" = "Premiere Elements"
"PRLD" = "Prelude"
"PSE" = "Photoshop Elements"
"PSTI" = "Preview"
"PVX" = "Presenter Video Express"
"RBHP" = "RoboHelp"
"RUSH" = "Premiere Rush"
"SBSTA" = "Substance Sampler"
"SBSTD" = "Substance Designer"
"SBSTP" = "Substance Painter"
"SPGD" = "SpeedGrade"
"SPRK" = "XD"
"STGR" = "Substance Stager"
"TAPI" = "Touch App Plugins"
}
#endregion
#region Main process
if (!(Test-Path $LogPath)) {mkdir $LogPath -Force | Out-Null}
Start-Transcript -Path $LogFile -Force
try {
# Run Adobe Remote Update Manager and capture its output
$ARUMOutput = (& "$ARUMPath") 2>&1 | Out-String
# Use regex to find the app codes, version numbers, and platforms in the text string
$discoveries = [regex]::Matches($ARUMOutput, $regexpattern)
# Create an array to store the results
$results = @()
# Loop through the regex matches and add a row to the results array for each app
foreach ($discovered in $discoveries) {
$SapCode = $discovered.Groups[1].Value
$versionNumber = $discovered.Groups[2].Value
#$platform = $discovered.Groups[3].Value
$productName = $productNames[$SapCode]
<#
# Add a row to the results array
$results += [pscustomobject]@{
"Product Name" = $productName
"Sap Code" = $SapCode
"Version Number" = $versionNumber
"Platform Architecture" = $platform
}
#>
$results += "$($productName) ($($SapCode)) (v$($versionNumber))"
}
# Convert $results array to a string and join each line with a comma (so content can be output in PR results)
$resultsstring = (($results -join ", " ) -replace "`r`n", ", ").Trim()
# Search the output for the string
$ARUMStatus = $ARUMOutput | ForEach-Object {"$_" | Select-String -Pattern $updatesinstalled}
if ($ARUMStatus.Matches.Success -eq "True") {
# proceed to remediation script
Write-Output "$($results.count) updates were successfully installed for the following Adobe Creative Cloud Apps: $($resultsstring)"
} else {
# nothing further to do
Write-Output "No updates are required for Adobe Creative Cloud Apps"
}
} catch {
$errorMsg = $_.Exception.Message
} finally {
if ($errorMsg) {
Write-Output "Something went wrong: $errorMsg"
Stop-Transcript | Out-Null
Throw $errorMsg
} else {
# Write-Output "No errors detected"
Stop-Transcript | Out-Null
}
}
#endregion
I had to combine the RUM output into a single line string so I could get the results to display in the PR status.
This is the output (with machines and usernames obscurred):
I may at some stage wrap the scripts in PSADT to prompt the user to close any Adobe Apps that are detected as running which require an update, and I am already looking at a way to update the RUM executable as v3.0.0.8 is no longer the latest version - I’ll probably do this with another PR
I hope this is of use to other Adobe Creative Cloud users in the community