Update 10/10/2017: The script and instructions were updated to reflect latest versions of SCCM and Adobe Flash Player versions.

I have been managing software deployments and updates/patching with SCCM 2012 (latest version 1607) in our organization with about 5500 workstations in the production environment. We have 3rd party software (Shavlik) installed to manage software updates, but I noticed that it is not always perfect for situations where multiple major versions of the software are installed. During my testing, I tried to deploy Adobe Acrobat Reader DC to replace Reader 11 and Adobe Flash Player 27.0.0.130 replace older versions of Flash (we had some old ones like 13, 15, 18, 21, 22). After the patches deployment, I noticed that it will bring up the patch level to the current one , given it's been approved and downloaded in Shavlik. In other words, it will not upgrade the major version of the product ( from Adobe Reader 11 to DC , or from Flash 18 to 27). Configuring SCCM application with just plain .msi installer also doesn't remove older major versions of the Flash players.

So, I had to come up with the solution to remove older version and install new one during the deployment process.

I decided to use powershell script to handle that installation/upgrade process, and then deploy it within an application (not the package or Task Sequence).

I created my source directories for these applications and placed all files in there.

After downloading .msi installer files from Adobe distribution site and uninstaller into the source directories on the network source locations I had 4 files in each folder:

Once all files and folders are ready, I created 2 applications: one for Adobe Flash Player ActiveX (for IE), and the second one for Adobe Flash Player Plug-In ( for Firefox, etc.).

For each application, I started Create Application Wizard and followed all steps pointing to correct location and the .MSI installer (for ...Active_x.msi or ...Plugin.msi in the directories above). After its completed, I just modified Application Catalog, User Experience, and Requirements (not to deploy on Windows 8.x or Windows 10 for ActiveX - Plug-In version can be deployed to Windows 8.x and 10) and Programs of the Deployment Type to start correct .ps1 scripts with powershell.

Here how ActiveX app properties look like:

You can use your favorite search engine to look for and download Icon for your application to be displayed in the Software Center.

Here is how my Deployment type looks like:

As for the Installation program, I have this command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -file .\Install_Flash_ActiveX.ps1

Detection Method was automatically generated during the Create Application Wizard.

In the Requirements tab, I limit deployments only to those Operating Systems: Windows XP, Vista, 7, 8.

Adobe Flash Player ActiveX cannot be installed on Windows 8.1 and Windows 10 with .msi installer. They should be upgraded with Windows Update.

You can specify Application Supersedence If you have older versions of the Flash Player deployed with SCCM. Please note that this selection is irrelevant to which version will be uninstalled with the script. It will just mark this application as superseding one of those older versions you might have deployed prior. When you deploy that script, you don't have to worry about making sure that "Uninstall Program" of your old Applications Types works. Powershell script removes all older versions of the apps, then installs new versions.

Above screenshots are for the creating ActiveX version of the Flash player. Create other versions of the Flash player with some modifications.

After applications are created, distribute content to your Distribution points, retire old versions of the Adobe Flash Player applications and deploy your new Applications. Also, If you install Flash Player during OS Deployment, don't forget to update your Task Sequences to install your latest applications.

Feel free to use those scripts and techniques in your deployments. and let me know If you have better ways deploy those upgrades of older apps.

i filled their licensing and waiting for about 1 week. but no news no contacts no calls... my enterprise staff are killing me for this feature and yet no access. so please if you can give me access to this sources.

By providing you, or anybody with download link or file itself I would violate that distribution agreement I signed with Adobe. You need to find a way to apply and to receive your own email from Adobe. Sorry :(

Theoretically, you can, but you will be missing reporting part of that application. Also, you would have to deploy it to Windows 8 - 10, which do not need ActiveX Flash player, only plug-in version, if they have Chrome or Firefox installed. You would have to be really creative and add logic inside the script to filter out those OSs, create your own return codes, which would determine if ActiveX needs to be installed or not, if it installed successfully, if either one of those apps requesting computer reboots, and pass them to SCCM to handle. I also wanted to just create one app and ignore all those return codes. but it can backfire at you if one of the apps is not going to be installing correctly/successfully and help desk will be flooded with calls because of it.
Do yourself a huge favor, don't try it in the production environment :)

#This is calling the "Flashutil" application to attempt to uninstall the currently installed version of Flash Player.
Write-Host "First Off we are going to politely ask Flash Player to remove itself.`r"

#When MSIEXEC is running it causes problems with the installation of Flash, there for I am having it forcivly end it, if it is running.
Write-Host "Attempting to Terminate msiexec.exe`r"
$Process = Get-Process msiexec -ErrorAction SilentlyContinue
if ($Process -eq $True) {Stop-Process - msiexec -Force -ErrorAction SilentlyContinue}

#I couldnt get this one to check whether the file exists because its a value instead of a key, so I am just suppressing errors and having it try to delete any of the versions.
$UIPath = "C:\Windows\Installer\$GUIDS\"
Remove-ItemProperty -Path "hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders" -name $UIPath -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\Folders" -name $UIPath -ErrorAction SilentlyContinue
}

Write-Host "Deleted all the GUIDs that were present, now searching for and deleting SIDs. $(get-date -format `"yyyyMMdd_hhmmsstt`")`r"
foreach ($SIDS in $SID) {

Hi,
Thanks for your post.
At one point I did use something similar to remove older versions, but it became too labor intensive to search up and maintain SIDs for each version of the Flash player Adobe releases.
That's why I decided to go with WMI query of the installed programs.
You're welcome to use anything you want in your deployments, but I found that simpler scripts work better, plus you don't have to maintain the list of those SIDs every time Adobe decides to spit out another version of the Flash player.
I also tried using Adobe provided "remover utility". But it didn't work for me because you can not specify the version of the software to keep. Since I was deploying two applications, first application was deployed fine, but once the second application started to run and Uninstall utility is running before Install of the new Flash player run, it removes the first application. In other words, If ActiveX version is installed first, then Add-on starts an installation, it removes the ActiveX version.

Why is it necessary to use a sledgehammer to crack a nut?
Instantiate the windows installer object
Read in all the installed MSI apps
Search each app name for Adobe flash
Get the app guid
Run the msiexec uninstall using the guid
Rinse and repeat.
No code maintenance necessary.

Hi.
I noticed two things while deploying flash. Ocasionally, if IE has page with flash elements, it will fail deployment, that's why I close it.
Another one, Adobe uninstall tool also corrupts other installation. If your plug-in version is installed first , ActiveX install with that tool running will corrupt it. And another way around.
Cheers

This content is currently hidden from public view.Reason: Removed by member request For more information, visit our FAQ's.

Thank you, Tim, but that is the manual method. It is not an option for mass deployment to a few hundred of thousands of computers, possibly located over a large geographical area and different time zones.

I guess I could have provided more detailed information, sorry. If you open the "ADOBE FLASH PLAYER 25.0 Administration Guide", linked from "http://www.adobe.com/devnet/flashplayer/articles/flash_player_admin_guide.html", there is a section on uninstalling Adobe Flash Player, including the syntax for doing so silently. One thing to look out for is that new versions of the uninstaller tool are released when new versions of Flash Player are released, so you need to remember to download the new uninstaller version with each deployment. I hope this helps.

Hello.. I hope the author still follows this article. I did what was listed in the article. I only made the edits necessary for it to run the latest adobe version 27. I ran it and it did install the latest adobe 27 on my test machine but it seems the uninstall older versions did not run as I still had an older version on the machine and the "uninstall" log was never created so I do not know what happened. the install log was created. any ideas on why the uninstall failed?

I also noticed that since version 27.xxx if product is installed with .exe file, it will not be removed with the script provided above. I had to change the script and use Adobe provided new uninstaller. I'll update the script and instructions.

when I applied to the adobe distribution license site after I was approved, I was directed to a page where I could download adobe 27 in MSI packages. so when I modified the scripts all I did was modify the package name not the file type. still does not explain why the uninstaller part which is step 1 in the script did not run.