I've had horrendous numbers of seemingly random failures (see my note at the conclusion of this answer) with some of the v9, v10, and v11 Adobe Flash MSI's not uninstalling or upgrading properly, leaving the MSI database on the PC in a state that makes me wary. I've ended up resorting to using a startup script that:
Checks the HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion
registry value to see if the currently-installed version is current (adding a WOW6432NODE
into that path, if necessary) and bailing if the version is current
Uses the old, unsupported, and now next-to-impossible msizap.exe
utility to remove known-failing MSIs from "back in the day" (including {2BD2FA21-B51D-4F01-94A7-AC16737B2163}, {B7B3E9B3-FB14-4927-894B-E9124509AF5A}, and {FA1D6742-0515-4A94-AD5D-F0484026E4A2}).
Uses the Adobe-provided uninstaller EXE to silently remove any current versions of Flash
Uses the current Adobe-provided EXE installer with the -install activex
argument (I'm only installing the ActiveX control in most sites) to install the current version
Writes out an 'mms.cfg. file to prevent automated upgrades
Here's a cleaned-up version of my startup script. You'd need to go out and grab the appropriate EXEs if you wanted to make this go.
@echo off
SET MSIZAP=\\my.domain.com\netlogon\bin\msizap.exe
SET DFSPATH=\\my.domain.com\dfsroot\Packages\Adobe
SET UNINSTALL=%DFSPATH%\uninstall_flash_player_x86.exe
SET INSTALL=%DFSPATH%\install_flash_player_11.4.402.278_active_x.exe
rem Detect 64-bit Windows
IF NOT "%ProgramFiles(x86)%"=="" SET WOW6432NODE=WOW6432NODE\
SET VER_FLAG_KEY=HKEY_LOCAL_MACHINE\SOFTWARE\%WOW6432NODE%Macromedia\FlashPlayer
SET VER_FLAG_VALUE=11,4,402,278
REG QUERY "%VER_FLAG_KEY%" /v CurrentVersion | find /i "%VER_FLAG_VALUE%" > NUL 2>NUL
if errorlevel 1 goto do_install
goto :EOF
:do_install
rem Uninstall all old versions of Flash.
start /wait /min "" "%UNINSTALL%" -uninstall activex
rem MSIZAP all old versions
start /wait /min "" "%MSIZAP%" TW! {2BD2FA21-B51D-4F01-94A7-AC16737B2163}
start /wait /min "" "%MSIZAP%" TW! {B7B3E9B3-FB14-4927-894B-E9124509AF5A}
start /wait /min "" "%MSIZAP%" TW! {FA1D6742-0515-4A94-AD5D-F0484026E4A2}
rem Run new installer
start /wait /min "" "%INSTALL%" -install activex
rem Block future automatic updates
SET DEST="%windir%\system32\Macromed\Flash\mms.cfg"
rem Detect 64-bit Windows
IF NOT "%ProgramFiles(x86)%"=="" SET DEST="%windir%\SysWOW64\Macromed\Flash\mms.cfg"
rem I'm using "sort" here because the redirect is being interpreted as "1>" and
rem doing "1 >" causes a space to be stored in the file, which "breaks" the file.
echo AutoUpdateDisable=1|sort>%DEST%
The problems I've seen uninstalling old Flash MSIs have mostly been:
"Adobe Flash Player 11 ActiveX -- Error 1714.The older version of Adobe Flash Player 11 ActiveX cannot be removed. Contact your technical support group. System Error 1612."
"Error 2753: The file 'installax.exe' is not marked for installation"
The straw that broke the camel's back, for me, was seeing these errors happening randomly in a Customer site with 1,000+ client PCs. I need to be sure that Flash updates are happening and having MSIs randomly fail to uninstall isn't an option. The fact that the MSI failures happen on each subsequent boot, slowing the boot process down, just adds insult to injury.
I haven't looked at a v11 MSI in detail. The v9 and v10 MSIs are nothing more than a custom action to execute the EXE-based Flash installer with command-line arguments. I wasn't impressed in the quality of the MSIs, because using Windows Installer to just run your EXE-based setup isn't using Windows Installer.