Determine if flash OCX is installed?
-
19-08-2019 - |
Question
What is the best way to determine if the flash ocx is installed in Innosetup (or any installer for that matter). I don't want to attempt to install it myself, I will simply force the user to go to the flash site and install, I just want to make sure that the flash.ocx (version 9+) is installed.
Is it enough to check for HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash and check that CurVer >= 9? Is there a better way to test for this?
Solution
Add a function in the code section to check whether you can create an instance of the Flash control, like so:
function IsFlashInstalled(): boolean;
var
V: Variant;
begin
try
V := CreateOleObject('ShockwaveFlash.ShockwaveFlash.9');
Result := True;
except
Result := False;
end;
end;
Check out the various examples in the Inno Setup package on how to use your own function to show a message box to the user, cancel the installation, open the Flash site in the default browser or whatever you want to do.
OTHER TIPS
Easy way without Try/Except
function IsFlashInstalled: Boolean;
var ClassID : TCLSID;
begin
Result := Succeeded(CLSIDFromProgID('ShockwaveFlash.ShockwaveFlash', ClassID));//Use CreateComObject() instead...
end;