2010-09-01 160 views
1

我一直试图通过当前的Air应用程序启动单独的Air应用程序。在Air 2.0应用程序中启动Air 2.0应用程序

这两个应用程序都使用Adobe Air 2.0 SDK进行编译。

到目前为止,我发现的方法还包括除了应用程序ID之外还传递了发布者ID,但是我相信发布者ID在Air 1.5.3之后变得多余了吗?

下面是我目前的实现,它似乎正确地确定了Air Application的版本号,但是当我尝试启动它时,似乎没有任何事情发生。

private static var _air:Object; 
private static var _loader:Loader; 

private static var appID:String = "someOtherAirApplication"; 
private static var pubID:String = NativeApplication.nativeApplication.publisherID; 

public static function loadAir() : void 
{ 
_loader = new Loader(); 
var loaderContext:LoaderContext = new LoaderContext(); 
loaderContext.applicationDomain = ApplicationDomain.currentDomain; 
_loader.contentLoaderInfo.addEventListener(Event.INIT,onInit); 
_loader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"),loaderContext); 
} 

private static function onInit(event:Event) : void 
{ 
_air = event.target.content; 
     //the pubID argument resolves to and empty string "" 
     _air.getApplicationVersion(appID, pubID, versionDetectCallback); 
} 

private static function versionDetectCallback(version:String) : void 
{ 
if(version != null) 
{ 
_air.launchApplication(appID,pubID); 
} 
} 

我已经在我试图加载允许浏览器调用应用程序更改应用程序-config.xml中(应用程序描述符)。

我尝试加载的应用程序的应用程序描述符的版本号是versionDetectCallback似乎拾取的“V1”。如果是这种情况,我希望能够启动它,但似乎并非如此。

任何想法?

回答

1

看来我面临的问题,找到适当的文件后,是我的方法

_air.launchApplication(appID,pubID); 

需要从用户生成的事件调用,如点击处理程序。

http://livedocs.adobe.com/flex/3/html/help.html?content=distributing_apps_1.html

而且似乎发布者ID是不是必需的属性和一个空字符串可以改为通过。

编辑:添加下面的例子。

//This method is called from a user initiated event, in this case a mouse click on a button 
private static function versionDetectCallback(event:MouseEvent,version:String) : void 
{ 
    if(version != null) 
    { 
     _air.launchApplication(appID,pubID); 
    } 
} 
+0

启动他们自己的应用程序,如果这适用于您,请分享脚本。谢谢。和imho如果试图找到其他方式将有趣使用系统bash文件/ bat文件来运行外部的东西。 – Eugene 2010-09-02 09:53:51

0

也许会更好地使第二个应用程序工作为简单的Web SWF并通过SWFLoader包含它?

您的第二个AIR应用程序的目标是什么?为什么不使用swf?

+1

第二个应用程序完全独立于第一个应用程序,但不会有一定数量的应用程序。理想的解决方案将允许用户编辑配置文件,以便从主/首应用程序 – James 2010-09-02 08:17:31

0

我需要从一个单一的“调度” AIR桌面应用程序启动不同AIR桌面应用程序,我有一个艰难的时间去了解如何做到这一点。尝试不同的解决方案不起作用。最后我找到了不同的方式来做到这一点。
更简单的方法是使用adobe.utils.ProductManager,它在Windows上进行了测试。

下面是代码:

import adobe.utils.ProductManager; 
private var pm:ProductManager = new ProductManager("airappinstaller"); 

private function launchMyApplication(myApplicationID:String):void 
    { 
     pm.launch("-launch " + myApplicationID); 
    } 

关于所有MyApplication: 这是Flex的AIR应用程序,它有一个文件夹META_INF/AIR;有一个文件 的application.xml在标签 “ID”

  • 不要忘记设置allowBrowserInvocation设置=真

    1. 应用程序ID;默认值是false。如果您忘记了,您试图启动的应用程序永远不会启动。