Beware the AIR Badger!!

It’s the true sign of a mature platform ecosystem, using the platform to build tools to build tools to deploy tools that are built on the platform. Huh?

A while back, I worked with Adobe to build a better AIR install badge. Having done so, I thought it would be a neat idea to build an AIR application that made it easier to configure and deploy badge installers. Adobe agreed, and the Badger application was created.

Badger allows you to load a template install badge, configure all of its options, preview it live (via the HTML control in AIR), and then export it for deployment. Badger also takes the pain out of configuring badges by tracking down your application ID, publisher ID, version, and other information. You can even configure a badge to install Badger, click Install Now in the preview, and install Badger from Badger – though this is likely to cause a tear in the space/time continuum.

Badger (and its icon) was designed in Flash CS3, built in Flex 3, and deployed on the AIR platform. I find it quite strange that Adobe chose not to include an install badge for Badger, but maybe they have a strong sense of irony. Or maybe it was just too much work. 🙂

UPDATE: I’ve been informed that the lack of a badge installer is due to a limitation of the article page template.

You can check out the beta of Badger here.

Originally, we had hoped to name the application “AIR Badger” (which was discarded for legal or branding reasons), which led to the image below that I threw together for the fun of it. That image ultimately led to the icon you can see on the app today.

Click for the full size image.

Grant Skinner

The "g" in gskinner. Also the "skinner".



  1. SWEET! a flying badger never gets old

  2. We don’t need no stinking badgers!

  3. I actually created a similar tool back when Flex 3/AIR 1 was in beta:

    I never did follow through and update it once AIR was release.

    I think your app is way more full featured than mine was. And your flying badger is more cool than my “foot squishing banana” logo.


  4. I just like the fact theres a flying badger. That. Is. Sweet!

  5. Very nice!

    I too actually created something like this (called it the ‘Badge Builder’) not too long ago. My UI was not near as sleek.

    Pulling the application ID, publisher ID, and version from the AIR file is too cool. Using the HTML control to preview live is a nice touch. Nicely done.

  6. Hello, Grant!

    Do you have any ideas to support other languages except English?

    Because I can not indicate local path to the files, if the name of folders not in the English…

  7. Hi Grant, nice work. It would be great to allow users to configure invoke parameters for their AIR application as well – i.e. the ability to pass a reference to an OPML file for Adobe Media Player for instance…


  8. amazing guy! =)

    Nice work and well done!

  9. That’s too funny, thanks for the tool, and entertainment!

  10. Awesome work!

    Only problem is that it worked once but since then I always get #2032 Errors 🙁

  11. Jassa,

    I’ve never seen those errors. Can you please post the full error message (ie. stack trace) so that we can determine where the error is being thrown from?

  12. Hi Grant,

    The error is occurring during the install process –

    If you have a sec just follow the link above and hit the install button. If not, I’ll post back here when I work out what it is.


  13. Jassa – The appurl parameter must be an absolute path (ie. beginning with http:// ). You will notice in Badger that this parameter is highlighted in red if it is not an absolute url. Badger also generates a warning when you export (in problems and notes).

  14. Ahh, thanks Grant – I *really* should have picked that up earlier. My bad.

  15. I cannot insert special chars :s

    I’m portuguese, and I need those chars: áàéèóòçãõ

    Is the preview badge inside a html component? or is a SWFloader? I need it! I’ll need to insert a badger into a flex site, and I don’t know how :s

    best regards,


  16. Yes! This is awesome. I was just struggling with getting the Install Badge manually setup for the past couple hours, and I knew you made it so I figured I’d go whine somewhere on your website, and lo and behold, the Badger saves the day! Most of my problems came from my oversight of the publisher id, which the Badger recovered for me.

    I still have 2 small issues:

    1. When upgrading or installing when the AIR runtime is already installed, users are prompted with an AIR Open/Save dialog instead of going straight to the install/replace page. Is that right? If AIR is not installed, it prompts to install AIR then goes straight to the Install screen, no somewhat-confusing Open/Save dialog.

    2. After installation/upgrade/launch, the message on the badge still says “Please wait…” — I really don’t give a flip about it, but the client does. Fact of life, right?

    Thanks for your work, and work on the work.

  17. This is great! Are there other badge templates available somewhere?

    I’m gonna use this a lot. Thanks!

  18. No other templates yet, but we tried to build it so that it was simple and powerful to create badge templates for Badger. If anyone creates one, please link it back from here!

  19. I have absolutely no idea what the tool does but you should definitely find a way to use that image and the tagline “Bigger… Stronger… Badger!” commercially. (Although I would recommend changing “Bigger” to “Faster”…)

  20. The tool is nice, but is there a trick to link to an AIR file via a relative path?

    The big question is > how can we distribute AIR apps on CDs without having the user to first install the AIR runtime then install the AIR app?

    If we could use a badge that relatively links to the AIR app that’d do it!

    Any clue would be really helpful!

  21. Is it possible to use a language other than English in the String parameters? I tried copying and pasting some japanese text and it wasn’t allowed.

    ie, in order to change “Install Now” to a localized label.

  22. Does anyone know how to create the new badge template? Badger just loads them, it can’t create one.

  23. Great work.


    I look forward to an updated beta.

  24. Nice work.

    Will there be any facilities for introducing parameters to be passed on install or browser invoke?

    If I just edit the created file to include parameters as with the original version will it work?


  25. An excellent app. Unfortunately I get the Error #2032 message as well in both Firefox and IE. I’ve triple-checked the absolute URL and the other parameters. Could something else be causing this error?

    Possibly this is related: I had a working example of the badge and updater API working from the web. I haven’t touched it in a couple of months. Today when I tried it, it tosses the same Error #2032.

    Did something change on the Adobe-side of things?


  26. Turned out that the server needed to know about the AIR MIME-type.

    I created a .htaccess file and added the following line:

    AddType application/vnd.adobe.air-application-installer-package+zip .air

    Hope that helps anybody with the same problem!

  27. A while ago, Aaron posted the following:

    ‘I still have 2 small issues:

    1. When upgrading or installing when the AIR runtime is already installed, users are prompted with an AIR Open/Save dialog instead of going straight to the install/replace page. Is that right? If AIR is not installed, it prompts to install AIR then goes straight to the Install screen, no somewhat-confusing Open/Save dialog.

    2. After installation/upgrade/launch, the message on the badge still says “Please wait…” — I really don’t give a flip about it, but the client does. Fact of life, right?’

    And I did not see a reply. How can I either remove the ‘Please wait…’ message entirely, or help the badge detect if 1) the install was cancelled ( or failed ) 2) the install was successful, and then revert back the the ‘fresh’ state.

    Thank you,

    Alex K

  28. Love the badger app! Is there a way to disable the save capability and just run the install when the user clicks to download?


  29. Can someone tell us what’s the exact image size to add to the badge as mine shows everytime a distorted image…

    Thanks in advance


  30. While creating my install badge with Badger, it recognizes that my app is already installed on my machine and therefore in the preview window allows me to launch the application.

    But I deploy the badge and open it up in a browser, it does not recognize that I have the app already installed and forces another install. As a test, I noticed the Tour De Flex install badge doesn’t recognize I have Tour De Flex already installed either. This is on both Mac and Windows.

    I have the correct application ID and publisher ID, but what’s going on here?

  31. … correction to my above post. Works on Windows (I am using XP ) but not on Mac (using OS X 10.5.8)

  32. Nice work! is it possible to send parameter to my app on launch?

    I have tried using this app but I still can’t passing any variable on launch.Can anyone help me?

  33. Grant, we absolutely LOVE your Badger tool. Thanks so much for making it available. We’ve blogged a little bit about it as one of our partners is about to go live with it. See our blog entry at

  34. Nice work. But I have difficulty entering non-English characters. Even I manually modify the exported html code to use non-English characters, they still display as blank in the actual badge.

    Can anyone help?


  35. I have spent countless hours looking for a better badger and finally came across this today. I am about one error code away from success. I used the Badger, got no errors then posted the files to the website.

    I added the mime type information to an htaccess file and made sure that I have the full url to the .air file.

    I would really appreciate some help to get this working properly.


  36. I have no problem using the badger. What error are you getting?

  37. so = new SWFObject(“lib/launcher/AIRInstallBadge.swf”, “Badge”, “250”, “250”, “9.0.115”, “#FFFFFF”);

    // these parameters are required for badge install:

    so.addVariable(“airversion”, “1.0”); // version of AIR runtime required

    so.addVariable(“appname”, “deviceMgr”); // application name to display to the user

    so.addVariable(“appurl”, “deviceMgr.air”); // absolute URL (beginning with http or https) of the application “.air” file

    // these parameters are required to support launching apps from the badge (but optional for install):

    so.addVariable(“appid”, “com.embla.deviceMgr”); // the qualified application ID (ex. com.gskinner.air.MyApplication)

    so.addVariable(“pubid”, “4AE1627BCE978E86797B22AD2A3083D32A346975.1”); // publisher id

    // this parameter is required in addition to the above to support upgrading from the badge:

    so.addVariable(“appversion”, “0.1”); // AIR application version

    // these parameters are optional:

    // so.addVariable(“image”, “app_m1_splash.jpg”); // URL for an image (JPG, PNG, GIF) or SWF to display in the badge (205px wide, 170px high)

    so.addVariable(“image”, “images/app_m1_splash.jpg”); // URL for an image (JPG, PNG, GIF) or SWF to display in the badge (205px wide, 170px high)

    so.addVariable(“appinstallarg”, parm); // passed to the application when it is installed from the badge

    so.addVariable(“applauncharg”, parm); // passed to the application when it is launched from the badge

  38. How do you launch the application from the badge?

    I’ve added so.addVariable((“applauncharg”,…) to index.html, but it’s still launched without any parameters.

    Note 1: The only way to run the app I found was to click Install Now, then click Open, and then click Run Now from “Would you like to run the version already installed?”.

    Note 2: I retrieve the parameters in the event-handler for WindowedApplication.invoke, using event.arguments.

  39. To answer my own question:

    The event to handle is actually BrowserInvokeEvent.BROWSER_INVOKE.

    A good place in which to add the event listener is WindowedApplication.initialize.

    The argument string must contain only a-z,A-Z,0-9.

    Normally appinstallarg equalls applauncharg, but both should be specified.

  40. Hi,

    Badger is working fine on the server, …but only when the AIR runtime is already installed on the client system.

    Otherwise, first thing Badger does is to alert the client to go to the Adobe website to install the AIR runtime (not nice), and does not go any further than posting over the alert every 5 seconds or so.

    Did I miss something in the Badger config process?

    Thanks for your help.


  41. If you try to use Badger with AIR 2.0 it loses the ability to launch apps. It seems that this is because AIR 2.0 doesn’t use publisherID any more. Even if you set publisherID to be an empty string in Badger’s parameters it still can’t find the app.

    Its a lovely little app Grant, hope that you have a few moments to update it! Or post the code and maybe someone else can help?



  42. Hi Grant,

    Very nice idea but we’re having the same problem as Jerome two posts up. Launching is fine with AIR 1.5 installed but when we uninstall that we just get an alert with a text link to the adobe site.

    Is the Flash Player supposed to install AIR directly or are we missing something? The solution now is to provide the user with a link when they don’t have AIR installed but that is not what we wanted..


  43. Currently Adobe is not officially supporting Badger for AIR2 applications in the beta release.

    The reasoning is that they do not want users to install Beta versions of AIR without realizing they are doing so. By forcing users to download the AIR Runtime through the Labs site they make sure the user is aware they’re using Beta software.

    From my testing, you can still detect versions, and launch AIR2 apps using badger, but the AIR Installation process and App Installation both do not work.

    If you are having problems launching an AIR2 app, just make sure you have set the <allowBrowserInvocation>true</allowBrowserInvocation> tag in your -app.xml file.

  44. Hi,

    Any update about the last issue?

    Do we have to specify the publisherID namually in the manifest in order to work with the badge?


  45. To allow the “Launch” or “Upgrade” functionality using Badger with AIR 2.0, just make sure the pubid you are passing is a space (” “). That’s how I got it to work properly.

  46. A Better Custom Air Install Badge + Tracking downloads with Google Analytics

Comments are closed.