Between a Rock and Hard Place with Flex/AIR

I've been working on a really cool Flex/AIR app over the past year. The application is called eBuilder, probably been the most complicated/expansive Flex project I've worked on to date.
eBuilder is an Elearning authoring tool based completely in Flex and AIR. It builds an XML representation of visual assets (Text, Video, Audio, Images, Flash) and then converts that XML to an MXML file that is then compiled by a server and returned as a standalone SWF file (still waiting for command line abilities in AIR to not have to depend on an external server to use mxmlc).
My problem has surfaced with an interesting dilemma we found ourselves in when we tried to push the boundaries of the application and make some really cool additions.
The feature that got us was dynamic, external components.
To make a long story [a little] shorter, we wanted to build the application in such a way so that if someone wanted to add a new component to the library, say a Drag-n-Drop component, we would be able to load that component and use it at runtime, rather than change the source of the application.
Maybe a great idea, but it proved to be a little difficult for two reasons:
- Adobe's/Vista's security model. Vista is very picky about who can write to the program files directory. Adobe and AIR respect this, which became a problem because of the second reason.
- Adobe AIR only allows module loading from exactly the same directory as the application (See http://livedocs.adobe.com/flex/3/html/help.html?content=modular_5.html, right after bullets). Basically, any module to be loaded in a Flex application has to reside in the same folder as the AIR application (in the Program Files directory).
Since Vista has effectively broken our little writing-to-Program-Files hack, eBuilder can no longer function with external components on Windows Vista. And, if Adobe ever decides to fix the hack that allows writing to Program Files, we're hosed altogether.
Anyone ran to a similar issue?
Can you think of a more efficient way to load external components? (I'm not stupid enough to believe there isn't a better way)?

2 Comments:
The comments I have heard is to leverage the AIR update capability as much as possible. As cool as dynamic component loading sounds, the risk of just breaking seems very high. There seems very small payoff for you and the user. An update of new components can accomplish the same task with a lot less hassle. Just my opinion.
@Cole
Thanks for your comment. I think you're right. I've been over and over Adobe's security model and the philosophy of what we're trying to do. I'm coming to the conclusion that it might not be worth shoving the square peg into the round hole anymore.
Post a Comment
Links to this post:
Create a Link
<< Home