Express Install with AS2 and AS3

One of the developers over at Vimeo emailed me asking how to use the Express Install option with the Flash player if they were using AS3. For those unaware of the Express Install option, it is the capability of the Flash player to update to a new Flash player version inline on a webpage vs downloading and installing it. After looking at the question, I realized there may be some confusion around this topic, since most people implement it but regard it’s implementation as voodoo magic. So I felt like I would answer the question and debunk the voodoo a little.

What are the Guts of Express Install?
First, how does Express Install work? It’s pretty basic and not something a NASA engineer needs to look at. Essentially you are loading in a SWF from Adobe that then does all the work and tells you it’s status. Your host swf needs to be at least 215 x 138 pixels and the option only works in players 6r65 and above. The SWF you are loading is located at

http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf

This SWF is considered loaded when it’s startUpdate function is defined. At that point, you can define MMplayerType, MMdoctitle, and redirectURL on it and call it’s startUpdate function, and it will begin it’s process. During this process it will report back to a function installStatus that you define on your root (with the following codes “Download.Complete”, “Download.Cancelled”, and “Download.Failed”).

What are the options with Express Install?
Now you can handle this one of two ways, implementing the logic to do the update in your own application or use an updater swf that is a proxy or prerequisite for your application swf (when needed). If you were to go with the first option, you are baking the code to do the update in your application. AKA, bad choice because isn’t that the whole point? Your application is using a version of the player that you need to update to. In previous AS1/AS2 cases the code is fine and could still run, but it’s somewhat defeating the purpose. However, in the case of AS3, no chance to collect cash and get out of jail, you are stuck.

The proper Express Install
The proper way to do this is option 2, using a SWF whose sole purpose is to do the update. Luckily, about 99% of the web is using SWFObject (whether 1.* or 2) and this is built in for your comfort and joy. With both implementations (which use Javascript to embed a SWF), you just define your Express Install SWF and you are good to go. In addition, you are given the source of the SWF to manipulate if you are feeling fancy. What SWFObject then does is run through a series of steps based on the version of player you have installed.

1. Runs a JS detect to see if you have the version needed.
Yes, it writes out the content SWF.
No, is there an Express SWF and the player is above 6r65
No, write out Alternative content

2. Yes, embed Express SWF, which then runs through it’s process
Express SWF is successful, it calls back to the JS

3. JS writes out the content SWF

Summary
Ok, so all that said, let’s summarize. Key point, SWFObject does everything you need to do. If you want to implement it yourself, just implement the same logic that SWFObject uses. SWFObject uses a separate SWF which is published as AS2 and can be used in previous players. You don’t embed any Express Install logic in your app and just let the installer SWF handle the magic for you. It has the logic which can step into your content once it is done. Hope this help with anyone that may be confused by this process.

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">