Using Flash Player Express Install with FlashObject

Please note that the newest version of FlashObject (1.3) changes how ExpressInstall is invoked when using FlashObject. Check out the FlashObject page for examples of using ExpressInsatll.

I’ve just updated FlashObject (now version 1.2.3) to support the new Macromedia Flash Player Express Install.

Macromedia recently introduced a new feature of the Flash Player called “Express Install.” This new method of upgrading offers a few very nice benefits:

  • No need to redirect your users to Macromedia.com to upgrade their player.
  • No need to rely on built in browser upgrade mechanisms. Internet Explorer users have become more and more wary of trusting the ActiveX install dialog box that pops up all the time and is generally associated with spyware or malware. While Firefox has an excellent plugin finder, other browsers that use the Netscape plugin architecture aren’t so fancy.
  • Nearly full control over the upgrade experience, which means no matter what platform your users are running, you will be able to walk them through a nearly identical install proccess.

Because of these benefits, Express Install is now my recommended upgrade method. When used in conjunction with FlashObject, it offers the best possible user experience for your users who need to upgrade their Flash player.

Here’s how it works:

First, add Express Install support to each of the swf files that may require an upgrade. These files need to be at least 215px x 138px in size. This is so the entire upgrade dialog can be seen by the user if the Express Install is triggered. It may also be a good idea to only place one swf with Express Install functionality on each page. This way users won’t be greeted with multiple upgrade dialog boxes and be forced to choose one (keep it simple for your users!).

I’ve included a new AS2.0 class in the latest version of the FlashObject script called ExpressInstall.as – this class contains all the code needed to invoke the Express Install process. All you need to do is place the script somewhere in your Flash class path, and place this code on the first frame of your swf:

if (ExpressInstall.init()) {
    stop();
}

The ExpressInstall.init() function returns true or false depending on whether the Express Install was started. If it starts, it returns true, if it doesn’t start, it returns false.

All other functionality should be moved to at least the second frame of the swf. This ensures that even someone running Flash player 6.0.65 can view the first frame of the movie and will see the upgrade dialog.

Next, you’ll need to upgrade your FlashObject script from 1.2.2 to 1.2.3 (you can get FlashObject here) and alter the embed code slightly only for the swf files that contain the Express Install code.

The new embed code should look like this (view example page):

var fo = new FlashObject("myswf.swf", "myswf", "400", "300", "8.0.22", "#fffff", true);

The only thing that changes is one more parameter after the color set to true. This does three things:

  1. Tells the FlashObject script that you want to allow for ExpressInstall. The script then gathers the needed information and passes that information into your Flash movie using flashvars.
  2. Checks to make sure the user has at least Flash player version 6.0.65 installed – this is the lowest version that supports the Express Install process.
  3. Then, if the user has at least version 6.0.65, but also has a version less than the required version specified in the FlashObject embed (in this example it was “8.0.22”), the Express Install process is started.

Once the install is completed, the installer launches a new browser window, and the user is redirected back to your original page with the new plugin.

And that’s it. You can grab the newest version of FlashObject with the ExpressInstall class here: http://blog.deconcept.com/flashobject/ or you can view an example page that uses this method.

UPDATE (08-18-2005): Macromedia recently updated the Express Install feature, and because of this, my ExpressInstall class was broken. I’ve just fixed it, however, and you can get the latest version by downloading the latest version of FlashObject here.

UPDATE (08-29-2005): If you are not using Actionscript 2, or are exporting your classes on a frame after frame 1, you can use this adaptation of my ExpressInstall class that Carlos Rovira wrote.

UPDATE (12-22-2005): If you are using ExpressInstall on your site, go tell Macromedia what you think about it.

47 thoughts on “Using Flash Player Express Install with FlashObject

  1. hmm, just a thought, but why can’t FO be used to detect the flash version and if it isn’t the required version then load write in a purely expressInstall.swf into the place where the other flash should be – this would enable the all currewnt flash files to stay the same (no extra code) and to only use one special swf for handling upgrades.

    An extension to that would be that if the require version of flash isn’t installed then instead of replacing the swf with the expressInstall.swf, the ‘default’ content is shown there and a html ‘layer’ (215px x 138px) is created and centred on the page into which then gets written the expressInstall.swf – this would give the impression of a dialog box and wouldn’t potentially cock up the sites design (since it is clearly a seperate object on the page)

  2. I think the current implementation is about as simple as it can get. The ExpressInstall class is very tiny (only 4k!) and is very easy to add to your existing file. Just add a frame at the start, add the tiny bit of code and you are done. Then add a very small ‘true’ to your FlashObject code and that’s it.

    Creating a separate swf just means more files on the server, and much more Javascript to detect the Flash version and then pick which swf to render on the page. Then you add even more code by creating a new div and centering that in the page.

    But, if you really wanted to impelement it like that, there is nothing stopping you. You could easily modify your pages to write a different swf – it just seems like more work to do so.

  3. Is there a way to force the alternate content to display if they cancel the express the install? That way you don’t have to forward the user on to another page and I can keep the no flash content as simple as possible and in one place. Thanks!

  4. It wouldn’t be very hard to set up.

    You would have to use some Javascript to do it:

    When you create the FlashObject on the page, you could store the alternate content in a variable:

    var altContent = document.getElementById('flashcontent').innerHTML;
    var fo = new FlashObject(...

    Then, in the ExpressInstall class, in the section that handles the response from the user, put in some AS like:

    getURL('document.getElementById("flashcontent").innerHTML = altContent;');

    Of course this is just rough code, you might want to clean it up a bit, but I think that would do it.

  5. Pingback: blog.dreampro

  6. Actually my URI it´s not functionally.
    I´m try Flash Object and it´s a powerful tool, i need to know how use extenals javascript for use for example: (resize the stage, change color from my movie to browser window).
    i wait for your answers, please, and excuse me for my bad english, i´m venezuelan.

  7. I’m a Flash novice and am trying to implement this method. Please excuse my lack of knowledge, but I have a couple quesitons for you:

    1) You state to “place the ExpressInstall.as script somewhere in your Flash class path.” How do I go about that?

    2) Then we should enter the code on the first frame of our SWF. Does everything else (i.e graphics, media components) have to be located in the second frame? I have no other actions in the first frame.

  8. Please ignore my previous comment. I got your code to work. However, audio of my movie plays despite the fact that the user doesn’t have the most recent player installed. And my video isn’t set up to automatically begin playing. Any idea of what might be happening here?

  9. The audio will play if you are playing it in a way that the Flash player you have installed can understand… The reason to move everything off frame 1 is so that nothing will start playing (like sounds) unless the movie doesn’t need to update and goes past frame 1.

  10. I believe there is a minor typo in the post above.

    “8.0.5” is the version required in the flashobject instance, but the description (bullet #3) says: (in this example it was “8.0.15″)

  11. Thanks! I wrote this when the player was still in beta and didn’t update all the instances in the post.

    It has been updated now, and you should always check for version 8.0.22 or higher, since all versions before that may have bugs (although very few bugs).

  12. When you build a Flash site or application using AS 2.0, Flash will look in specific folders for the classes that are used in the movie.

    The first place it looks is in the same folder as the .fla file, then it will check other folders that you have specified in your Flash AS 2.0 preferences.

    In this case, if you download FlashObject you’ll see that the file is located in: com/deconcept/ExpressInstall.as

    So because the class is com.deconcept.ExpressInstall, Flash will automatically look in that folder and find it as long as you put the com folder in the same folder as your .fla file.

  13. I agree with the very first poster. Regardless of the file size, the implementation of the Express Installer would interfere with my frame setup, my preloader, my library, and my general approach to building flash pages. It seems that the method you’ve chosen to work the express installer into the FO is closely in tune with the way the FO class is constructed. You cannot easily change the class to handle embedding an ‘either or’ style pattern. Writing optimal code is not the case, since it is merely a detection script. The only thing that matters is the ease of implementation. The most effective solution I can think of is to take the decorations off of the FO class, and keep it doing what it did originally: simply embed the flash object code. Writing a detection/implementation class that will write either the original content, or the express installer based on the detection result would loosen the ties you’ve had to make with the installer and the original content.

    The solution would be a class composite of the detection script and the flash object, where both elements could, as well, independantly provide their roles functionality.

    Regardless of the rather elaborate implementation, the solution you’ve come up with is very clever and creative, but it isn’t the most effective solution based on the purpose and context of the FO; which seems to me to be a time saving implementation without sacrificing flexibility.

  14. I can’t imagine that having multiple swf files and then showing the upgrade message *and* another swf floating over everything with the expressInsatll going on would be a good thing. There are so many things that can go wrong with that setup.

    The current ExpressInstall class was more of a proof of concept. It works for me, and it works for a lot of other people using Actionscript 2.

    If you have some non-standard way of initializing your Flash sites, then by all means tear it apart and create a new class that will suit you better.

    As for adjusting FlashObject, I think the current setup is about as elegant as it can be. If you don’t have Flash, you still see the alternate content, and if you do have Flash higher than 6.0.65 but not quite the required version, you get the expressInsall dialog. It doesn’t get any simpler than that.

    Maybe I’m not understanding your suggestions properly?

  15. Hello there,
    it’s a great tool.
    i used it with the new expressinstall

    i have one question :when i changing the alert script (as someone clicks on the “No” button) to something else it’s still showing the same alert. i change it in the expressinstall.as file. where is my mistake?

    Thanks a lot
    gal

  16. Hi Geoff,

    I suppose it is a matter of defining what the standard routine for initializing a flash website would be; which seems relevant only with an implementation that would interfere with your development design from the flash scope.

    Our team has created a couple of custom pages for the express installer dialogue so far ( http://pti.com ) and I believe we will continue to do so in the future. There is much extra work involved if everything is crammed into one fla file. Work flow propogation is complicated as well, especially with a source control server.

    With pages that we do not build custom detection pages: I see less work involved by having a standard no-resize 100% x 100% flash page with the express installer setup within it. If it were optimally constructed with your current source code, then allowing for a completely alternate swf would take away from ever having to worry about implementing the installer into your website at all. You could have a standard template that would cover detection; completely transparent to your content swf.

    Indeed, the original Macromedia implementation is simply a proof of concept. One that didn’t interfere with the original content.

    I don’t understand how you came up with so many swf files floating ontop of each other. There would only be two, neither of which would float over anything: one that would be displayed if 6.0.65 or higher was detected, and one that would be displayed if the required version was detected.

    I apologize for my abrasive nature. I realize only now that, if someone came across something I spent my time on for the community the way I did with you, I would feel a bit offended. If I can find the time I’m hoping that I will be able to share my ideas in code so that they may be clearer.

    High Regards,

    H

  17. Huseyin, I don’t think you are being abbrasive at all. In fact, I wish there were more discussions of this nature in the Flash community.

    ExpressInstall is still very new and I think saying “This is how you use it and should be the only way to use it” is a little premature, if not downright wrong. However, I do think it’s possible to make it easy for most people to use it without much modification.

    I do see your point and the attractiveness of having a completely independent upgrade system, but I’m still convinced that the way I current use FlashObject with ExpressInstall is the best way for the most people.

    It requires very little adjustment to your .fla files. Simply add an if statement and you are done. If I were to implement a system that uses an independent ExpressInstall swf file, I would have to add quite a few lines of code to FlashObject to achieve what is essentially the same thing that is working now.

    In the case a hybrid website, where you have multiple Flash movies on a single page, you may only want to invoke the ExpressInstall feature on a single movie, and not all of them. FlashObject is perfectly suited for this scenario because you can select which movies you want to use ExpressInstall and which ones are just ‘normal’ Flash embeds.

    In the case of a full screen site, you simply add a single parameter to the FlashObject constructor and add in the ExpressInstall class provided and you are done.

    As for where all the floating swf files came from, I was referencing the first commenter’s suggestion about having an upgrade swf ‘float’ over the top of the page. That would require more javascript code too because you now have to have this div on the page (or create it with javascript) and then position it on the screen.

    In the end, the cool part about all this is that Flash and FlashObject are very flexible, and you can use them however you like. The example page you posted would be much cleaner if you used FlashObject to embed it… and adding the ExpressInstall updater should be really easy whether your site is AS1 or AS2.

  18. Well, I don’t recall making the remark you’ve quoted me on. It isn’t at all what I’m saying. With the class composite I mentioned in my first post, the steps to using the express installer with the flash object tool would be quicker. It would take 2 classes to accomplish this. One class that would take the flash object arguments for instantiating the desired object and another class for using the flash object class to determine whether to instantiate the express installer or the original content. The flash object class would be built to work independently of the other class, and it would only embed swf files. No extra decorations.

    So, we can look at the steps to see how much work needs to be done in both cases:

    – FlashObject with ExpressInstall in its current state

    1) Set up the page that needs to embed flash objects
    2) Add express install class file to class library
    3) Add express install graphic to your flash page, where here you’re probably moving around frames and adding exception blocks to get things to work properly with your preloader
    4) If you’re preloading anything go to 5, otherwise implement the express installer
    5) Chase down Carlos Roviras adaptation to properly preload exported symbols
    6) Implement the adaptation

    – FlashObject with ExpressInstall, alternate technique

    1) Set up the page that needs to embed flash objects, the difference here is that you also need to refrence the express installer swf for the flash object that will be displaying the express installer instead of the original content.

    With the former method, there are roughly 6 steps involved, with the latter method, the only step involved is refrencing your swf files. Another perk for the latter technique is that if you have a template for your websites that used the embedder: the only thing you would have to change is the original contents parameters. Also with the latter technique the express installer swf is actually a 6.0 swf, not an 8.0 exploit, which may become a problem in the future if the required player was the only player that would initialize the swf.

    Yes, I’m aware that code would be much cleaner if I had used the flash object, I think it’s a great idea but I found out about the tool only recently. The final code for the express installer for PTI was implemented many weeks ago, I was working under very tight deadlines. The purpose of the url was to show the custom installer page, which would of been further complicated with your tool.

    In the end, any changes that you would have to make are automation changes that would save time in the long run; the additional automation would take alot of time off of context oriented repetitive tasks.

  19. I wasn’t quoting you, just making a general statement that discussion of things like this is a good thing.

    As for the steps involved, for probably 99% of the Flash websites out there, they are actually this:

    1) Set up your page same as always using FlashObject (adding the extra parameter to trigger the ExpressInstall)
    2) Add the ExpressInstall class to your project.

    That’s it.

    I personally start with a bare bones framework for nearly every Flash website I build. This includes a general App class, and a few utility classes (including the ExpressInstall class as well). I genrally build my projects so the main swf file is fairly small, only including the initial preloader and sometimes the initial content the user sees, and then placing the sections of the site into individual swf files. This means I don’t have issues with preloading tons of Classes. Because of all this, it’s very simple to add the ExpressInstall check. I can either place it on the first frame and move the App.init() call to frame 2, or I can even use an if statement that checks the need to initialize the ExpressInstaller or start the App.

    Most Flash developers that I’ve worked with have a similar framework established for their own projects. I do realize that there are still people who don’t use AS2, and people who place all their content into a single huge swf file, and if that is the case, they can find Carlos’ adjustment and not use a Class based approach.

    As for the player not initializing the swf: we already know that the Flash 6.0.65 and 7 players will try to play a Flash 8 swf file. Those players won’t be changing any time soon, and historically Macromedia has always allowed newer content to be played in older players – there are plenty of sites that do an extra Plugin version check when the site loads to avoid playing in an older plugin, so that’s not an issue.

    I do see the appeal to setting the whole thing up as you suggest, but in my case it doesn’t make building the site easier since I already have the ExpressInstall class integrated with my frameworks, and it ends up adding a bunch of Javascript that most visitors to my site don’t need. Also consider the people who aren’t using ExpressInstall at all: they will still download the FlashObject code, but the whole section that embeds the ExpressInstall swf will be useless to them and just wasting bandwidth. Sure, it’s not a ton of bandwidth, but why add a bunch of code you don’t need?

  20. Sure, you can assume that I don’t know what I’m doing, and that I’m an AS1 programmer. You can also assume that the flash object code I had in mind would be one massive javascript file; but wouldn’t you agree that making all of these assumptions isn’t as effective in understanding my thinking compared to simply asking me?

    If you would like to compare and contrast how it’s most effective to construct a website…

    I too start from scratch with websites that I build, except there are cases where the embedding markup document could be reused. I have an object oriented common library that I’ve been expanding, along with plenty of components I’ve built from scratch as well. I tend to get my information from books that I read about design patterns instead of relying on others to construct utilities and components for me to take, except I’m not completely opposed to the idea.

    I build my sites with all pieces that would fall under similiar classifications in their own swf files, under a parenting classification, if not part of the Main classification.

    However, I’ve found that a compositional approach to initializing swf files during runtime is much more flexible. With this compositional approach I can either preload my classes on the second frame; which is typically most of the code for the website, with the exception of inherited code which in some cases is loaded from the shared library, or preloaded on the second frame as well. Or I can load it all on the first frame; which would call for loading my movieclips that I export for runtime use along with any extending class. The latter isn’t a very effective technique for loading websites, my typical approach is a method I’ve developed from building RIA’s and CMS systems where the operating code is loaded before the operation of the website begins. This allows for a more flexible object oriented design.

    It sounds as if you’re using an inheritance technique, exporting classes with child swf files ( extending movieclip classes ), otherwise you would be loading several classes off of the first frame. With this approach, any changes you make requires you to recompile the swf files with the classes they use. The UI is not seperated from the code, and nothing seems to be preloaded.

    With a compositional approach the swf files that are loaded by the main swf are only ui elements without any code attached to them, and any code based elements the views use are loaded via a shared library. This way any changes would only require the recompiling of the main swf, instead of the main swf and child swf; and any changes to components would require only recompiling the shared library.

    Additionally, during the preloading of the classes and movieclips, I preload the shared library in order to ensure its existence on the client machine before any subsequent requests to the symbols it provides are made. Furthermore, the shared library also compiles the fonts and css styles used throughout the website.

    What you’re telling me Geoff is that you’re inclined to omit preloading because of Flash Object, and everyone else is too except for me. I don’t even feel I need to argue this point, because it’s obvious that preloading is a best practice. You’re contradicting statements regarding the extra code for the assumed burrito javascript file which includes ExpressInstall as a seperate entity and neglect to seperate the ExpressInstall from the main swf renders your argument obsolete. I find it hard to believe that 99% of all Flash websites are being designed in accordance to your steps. If you shared how you’ve managed to gather so much statistical information then I wouldn’t have any reason to disagree. Even with the steps that you’ve outlined, you’re still omitting the addition of the express install graphics and implementation of the necessary exception in order to determine whether to run the installer or not.

  21. This tool is awesome! But, is there a way to stop the redirecting to the original page and just close all the browsers or even better to redirect to a specify page after installation?

    In Safari/Mac: I have to close all browsers before installation, once the installation is finished, a browsers showing the page with flash 8, which is great, but our flash movie is on a child window, so the parent window is not there anymore causing malfunctionalities.
    In IE6/Win: Even though the script does not force you to close all the browsers before installation, at the end of installation open a new browser with our flash movie, but our parent window is not anymore the opener, so it causes malfunctionalities too.

    All input is very welcome!

  22. You can just modify the flashobject.js file for your specific site:

    Change this line:
    this.addVariable("MMredirectURL", escape(window.location));

    to something like this:
    this.addVariable("MMredirectURL", "http://www.example.com/flashpage.html");

  23. Geoff,

    It worked pretty nice, I sent it to a auto-resize page that says “Installation Complete” & “Close Window”…as I said it worked pretty nice..Thanks!

  24. I’m probably dumb but i don’t get it I’m reading all it for the zillionth and first time and even then it eludes me.
    As I’m working only in flash building full flash sites with generally only the standard html page flash gives you standard I don’t know about html and java.
    So here I go.
    First add express Install support to your swf files.( how do I do that)
    Then the action script (that one is crystal clear to me).
    In which file should the embedded code reside?
    I think if I know these things I could get it working.

    Cheers and many thanks for what’s here already.

    Niels

  25. On the second or third post when you and Huseyin Elibol started your little debate, he mentioned that having the code (I have not tried as of current)put in the first frame of the Flash movie-.swf- that it interfers with a preload script. Is this true? If so how do you still preload the .swf effectivly.

    Thanks

  26. In some larger Flash projects developers will set their AS2 publish settings so the classes are exported after the first frame. While my suggested use of the ExpressInstall.as class included with FlashObject is to place on the first frame a check to see if the upgrade is needed, and if not, to proceed with showing the movie.

    If you have a smaller or medium-sized file where your classes can be preloaded comfortably before your swf content, you won’t have a problem. If you do have many classes and need to preload them, then you should consider either using Carlos’ include script method or keep your preloader code (And anything else before the ExpressInstall.init() call) compatible with Flash 6 and do the check after your classes have preloaded but before your movie initializes.

  27. Geoff:

    Thanks for you quick response. Thank God there are people out there like yourself who are able to help and support wanna be web programmers like myself.

    Anyway, I’m trying to use your suggestions for the express install method you have discussed. In your writing “First, add Express Install support to each of the swf files that may require an upgrade” What is involved with this, I have downloaded the Flash Detiction kit from Macromedia and in it contains the Express Installation folder. In other words how do you have that little .swf file load into your div tag to have the users download the correct version. Am I making sense. The whole flash detection kit in it’s entirety is exhausting to say the least.

    Any way you could point me in the right direction? To recap, I just want to have my detection method reflect everything you have written my only issue… i think is to try and impliment the express installation into my FLA or swf files.

    Thanks again

    Jason a.

  28. Geoff:

    Ok I see your .as file my questions (revised) is how do you place the script somewhere in your Flash class path. What does this mean and how do I do it. If you don’t mind responding.

    If I get this it will be huge!

    Thanks again!

    Jason A.

  29. Huseyin, just a thought, why don’t you just put a get url command on frame two of a flash file with just the flash object, that does exactly what your saying you want, no? That way you can redirect to any page you want, and seperate the detection from the content file…

  30. Hi Tim,

    I am interested in your suggestion, however the information you’ve provided isn’t detailed enough for me to properly grasp the design you have in mind. What other purpose does the swf serve besides redirecting, detection/ express install? Why does it redirect on frame 2, or, what is the purpose of the first frame? What do the embeding markup documents do, and how are they integrated with the current state of the FlashObjects Express Install implementation?

    There are many ways to solve the seperation of detection from the content, and so, the motive of my argument is to optimize and decouple FO so that it is automated to handle repetitive, non-business related functionality; which can effectively be accomplished by expanding on Geoffs work. This will not only allow programmers to eliminate redundancy, but it will also streamline the process, allowing users of the tool such as Jason to better understand and implement optimal detection, and, in the process, saving the time of both himself, and Geoff from having to support developers as frequently as he does. The time he spends on support may have been better spent reprogramming the tool in order to eliminate confusion by automating non-business related processes.

    I am dedicated to my opinion, and it is due to substantial reasoning. If the express install implementation, player version detection, and swf embedding can be streamlined to eliminate non-business processes, Flash Objects express install feature would be prone to a larger number of developers. The result would be quicker propogation of new Flash player versions, and an overall advancement in internet technology. Furthermore, the resulting pattern can be classified as complementary: Flash developers would compile projects in newer versions sooner then later because of the increase in propogation speed, and the increase in propogation speed would result from developers compiling projects in newer versions sooner then later. Though the latter statement is a consequence of the express installer itself; its potential would be increased from a streamlined express installer implementation, and even more so in conjuction with Flash Object.

  31. The method Geoff has developed is perfect, and, if you read the tutorials on the site, the suggestion I mentioned is simple and can be re-used with none of the fluff you are decribing about about repetitive no-business processes, embeding markup documents and and the like.

    Using express install with the flash object requires making a 2 frame movie, generally you put the content on frame two and a single line of code that tells the movie to stop if express intall is invoked on frame one. My suggestion was this, make a dedicated movie for detection, make a dedicated movie for your content. on frame one of the detection movie you have the stop action required if express install starts, on frame 2 you have a stop action so the movie does not loop and a get url command that sends people to a page with the content flash on it. i.e. getURL(“blah.html”); therfore, the only change you have to make when you do a site, is teh five seconds required to change this url. I assume you could use a naming convention for all your sites so that you nver have to change the url at all though…

    Simple. I just did this on a site launched today to test it out for myself. ( http://www.grandcenter.org/firstnight/ )

    I would also suggest that you should take the flash object for what it is, a wonderfull DONATION made on someone else’s free time, and a FRAMEWORK not a panacea or something you deserve. You seem to be beratting Geoff’s work a little, and he has no reason but good will to work on this in the first place. If it truly wont work for you, develop your own method.

    In that line of thoughr, Geoff, thanks a ton, I use this for all the flash I do now, couldnt be easier…

  32. Thanks Tim, but I don’t agree with your redirection method – I like having all the Flash content on one page. If you redirect from Flash, search engines won’t follow those links and your content won’t be indexed. I’d rather just have one main swf file that handles the ExpressInstall or loads my site if I don’t need to upgrade.

  33. There are a hundred ways to get around this like dropping a preloader on frame two of the detection movie and loading in your content after detection and express. I only did it on the site I linked because it is a flash / html hybrid with more than one seperate flash file, putting express install into each of these was not an option. Can I ask what you would have done in that situation?

    Thanks again.

  34. Well you have to account for people who reach your page directly – if they skip the ExpressInstall page, they won’t get the fancy upgrade at all. Normally I will only put ExpressInstall code in one movie on the page, and let the others fail detection and show the alternate content.

  35. Hey there, I just got flash object implimented with the express install enabled and all is working fine. Thanks a ton for the great flash detector, it works like a charm! My only question is: Is it possible to load a movie clip into a depth higher than that of the express install movie, not to replace or cover it, but to add the logo of the webpage i’m working on just to the left of it. I’m using flash object on a full page flash movie and right now the entire screen is the standard express install gray with the express install dialogue in the center. It doesnt look very user friendly or welcoming in my opinion. I’ve tried modifying the class to load a movie clip into a container clip in a depth higher than the expressInstallHolder (while setting it to a depth of 1 vs. 10000000) but it somehow is always at a depth higher than my clip no matter what i do.

    A code example would be greatly appreciated.

    Thanks,
    Nathan

  36. You could try setting a timeout that attaches or swaps the depth of your logo to _root.getNextHigestDepth(), but it would have to wait long enough for the updater movie to load, so it might not always work.

    There was someone who posted the code that is in the autoupdater swf file on the OSFlash mailing list a few months back – as I recall, it creates a giant textfield on the _root and then loads the updater over that.

  37. Thanks Geoff. Hrmmm, using a timer is not the way I wanted to go… as you said, its unpredictable and if a method doesnt work 100% of the time, to me its not worth it. I found a better way of “styling” the Express Install in the end by just changing some of the code in flashobject.js. Basically if Express Install needs to run then I force the size of the swf down to exactly 215x138px, center it in a div and write in some html above it. If Express Install doesn’t need to run I just have it resize the swf to 100% and all is good. Thanks for the help though and for the great detection script!

  38. Easy to serve different content to different browsers.
    I worked on a project recently that made extensive use of the wmode=transparent option. Well when you are using IE or Firefox you can use wmode=transparent with the Flash 6 player, but if you are using Apple’s Safari browser, you need Flash player 7 to see the content properly. So in the embeds on the page, we required Safari users to have the Flash 7 player, and everyone else the Flash 6 player. Without Javascript we would have had to force everyone to upgrade to Flash player 7, something we didn’t want to do, even though the Flash 7 player has a pretty high penetration percentage.

    How do I do this (taget specific browsers)? I can’t seem to find the explination. I’d like to use a transparent background on a flash movie while supporting as many browsers as possible.

    Thanks.

  39. Hey, I found a little issue that’ll affect anyone using flash on secure (https) page. If you loaded the partent swf via https, you won’t be able to load autoUpdater.swf over http. If I could be so bold as to make a suggestion for your excellent ExpressInstall class, it’d be nice if it automatically figured out if it was loaded via SSL, and changed the autoUpdator.swf download path accordingly. I’ve already made this change on my side, so if you’d like to shoot me an email, I can send it to you.

    -Bryan

  40. Excellent, I’m just about to release an update to FlashObject and the ExpressInstall scripts… I’ll be sure to include that change.

  41. OK, so I know this question has been bounced around, but, I still haven’t found an answer. Where do I place the ExpressInstall.as file on my server!?! My swf file with the required actionscript is located at /fla/nav.swf. So, does that mean that the ExpressInstall.as file needs to be at /fla/com/deconcept/ExpressInstall.as, or, /fla/ ??? Please help!

  42. You don’t place the ExpressInstall.as file on the server at all. The Flash IDE uses that file when you compile your swf. Check out the code in the example files that are zipped up with FlashObject.

Comments are closed.