• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1405
  • Last Modified:

Distributing VB.Net app with Flash Player (AxIntrop and Interop included)

PROBLEM: My VB.Net app uses the Flash Player but will not run on a fresh Windows XP or Vista machine unless I install the flash player via Adobe's website or via the adobe flash player 10 install msi.  

BACKGROUND:
I have added the flash player to my application which Visual Studio 2005 kindly created wrappers for (AxInterop.ShockwaveFlashObjects.dll and Interop.ShockwaveFlashObjects.dll)  These wrapped c:\windows\system32\macromed\flash\flash.ocx

The development machine has since been updated to flash 10 (c:\windows\system32\macromed\flash\flash10a.ocx).  

QUESTION:
Part 1. it appears VS2005 now points to flash10a.ocx, but how can I make sure the wrappers do as well?
Part 2. The setup seems to automatically include the flash10a.ocx file.  The register property for this file is set to vsdrfDoNotRegister.  Should I switch it to vsdrfCOMSelfReg?
Part 3. Any reason why this would not work on it's own?   It is preferable to to not have to run the adobe msi or download the player to get this to work.
0
straubtm
Asked:
straubtm
  • 3
  • 2
1 Solution
 
Vadim RappCommented:
I doubt this is all good idea. What's going to happen if you wrap your very own flash, so yourapplication relies on it, and in several months the user updates hisflash to the next version? which is very likely.

Flash player is now on everyone's machine, every website is using it. I think it would be wise to leave it to the user. All the websites that are using Flash are not shy to say "you need flash player to see this site, go and install from www.adobe.com". You shouldn't be either.

If you still decide that you must deliver Flash to the user yourself, I think all you have to do is add the version you want to the references of your project.

>   The register property for this file is set to vsdrfDoNotRegister.  Should I switch it to vsdrfCOMSelfReg?
the only reliable way to find out is to try both ways. By the way, the recommended way is to extract all the registry information from the COM object and create it by the installation - rather than allow the COM object to self-register.

0
 
straubtmAuthor Commented:
Unfortunately, the winform with the reference to the shockwaveflash obj crashes on initialization if flash is not installed.  So, trapping for it like you do on a website is not quite as easy.
0
 
straubtmAuthor Commented:
Okay, You've convinced me that my idea is not a good one.  
I now plan on checking the registry for the existance of the Flash Player...
(if HKCR\CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000} exists)
and get the version number here... (HKLM\SOFTWARE\Classes\ShockwaveFlash.ShockwaveFlash\CurVer).

If it doesn't exist or isn't the right version, how might I install the right version from the web?
0
 
Vadim RappCommented:
Don't install the right version from the web. Adobe may change the address. User can be behind the proxy. Use may have no permission to install by policy. And so forth.

msgbox "Dude, we need Flash Player here. Last time we saw it at www.adobe.com. Come back when you have installed it, ciao!",vbCritical
0
 
straubtmAuthor Commented:
Gotcha.  Well, I decided to use the Bootstrapper Manifest Generator from CodePlex and check to see if they have Flash installed via the registry.  If not, it downloads and installs the latest version from my website... Adobe granted me rights to redistribute it... so problem solved.  Thanks for helping me think this through.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now