Adobe FlashPlayer 9.0.115 MSI Customize via Transform
This is Part 2 of 3
Part 1 of 3: see http://www.myitforum.com/articles/6/view.asp?id=11240
In production, we had deployed version 9.0.47 via ITCU. During testing, we noticed that although 9.0.115 was installed and in use, the 9.0.47 version was still listed in Add or Remove Programs. That was a relatively easy fix. This one you could do without having Wise or Installshield to create a transform--you could use ORCA to edit the MSI. What I did was obtain the UpgradeCode from 9.0.47 (we record that as part of our packaging process--so that was easy to find for me), and go to Direct Editor, Upgrade Table, and added a line with these values:
UpgradeCode = {42463807-970B-4257-BC95-5C348D61DF1C}
VersionMin = 9.0.47.0
Versionmax = 9.0.115.0
Attributes = 769
ActionProperty = ISACTIONPROP1
Assuming you have Wise or Installshield, and already know all about Transforms, create a Transform/.MST for this .MSI.
-
We suppress AutoUpdates for Flashplayer, if you do so as well, create an mms.cfg file in Notepad with 1 line in it: AutoUpdateDisable=1 In notepad, "Save As" to %windir%\system32\macromed\Flash with a name of mms.cfg, AND (this is the important bit) Encoding of "UTF-8", not ANSI, the default. In your Transform, add this file to system32\macromed\flash. (if prompted, pick to save files in a .CAB)
-
Download "uninstall_flash_Player.exe" from Adobe, doc 14157. In your Transform, add this file to system32\macromed\flash. (if prompted, pick to save files in a .cab)
-
(These instructions presume Installshield, since that's what I have). These 2 custom actions are to support truly uninstalling FlashPlayer 9.0.115 during an msiexec.exe /x action, and to allow for a rollback to a previous version (like 9.0.47) if required by the end user. Go to Custom Actions. We'll be creating two custom vbscript actions. New VBScript, stored in custom action.
-
Name: CopyUninstaller
Contents of the script:
strFolderName = Session.Property("INSTALLDIR")
Set fso = CreateObject("Scripting.FileSystemObject")
set sho = CreateObject("Wscript.Shell")
fso.copyfile strFolderName & "\uninstall_flash_player.exe",strFolderName & "\unFP115.exe"
-
Name: UninstFLEXE
Contents of the script:
strFolderName = Session.Property("INSTALLDIR")
Set fso = CreateObject("Scripting.FileSystemObject")
set sho = CreateObject("Wscript.Shell")
sho.run strFolderName & "\unFP115.exe /s",0,vbtrue
Set f1 = fso.GetFile(strFolderName & "\unFP115.exe")
Sho.regdelete "HKLM\Software\Macromedia\FlashPlayer\SafeVersions\9.0"
f1.Delete True
-
Then, in Sequences, Installation Execute area, input the custom actions; both with Conditions of REMOVE="ALL"
-
Put 'CopyUninstaller' between "AllocateRegistrySpace" and "ProcessComponents"
Put 'UninstFLEXE' after 'ISSelfRegisterFinalize' (yes, the very, very last thing, even after InstallFinalize)
Save your Transform, if prompted, additional files should be in a CAB.
-
TEST this thoroughly. The installation source is the .MSI the .MST, and the .CAB file. The command line would be something like this (all on 1 line):
msiexec.exe /i install_flash_player_active_x.msi TRANSFORMS=install_flash_player_active_x.mst /qn
One thing I noticed was if IE was open, it wouldn't successfully upgrade/install. For that reason, I set the Package/program to only run when no user was logged in (more in Part 3 of 3, using ITCU to deploy FlashPlayer 9.0.115 tomorrow).
Standard disclaimers... your mileage may vary... test this yourself... this is just what I did... no promises... don't blame me...
Teasers:
Part 1 of 3: How to really uninstall Adobe FlashPlayer 9.0.115, the redistributable MSI (yesterday)
Part 2 of 3: Customizing the .MSI so it'll really uninstall (this entry)
Part 3 of 3: If you use ITCU, delivering your customized Flash Player.msi + .mst via ITCU. (tomorrow)