Apache flex 在Air 2.0应用程序中启动Air 2.0应用程序

Apache flex 在Air 2.0应用程序中启动Air 2.0应用程序,apache-flex,air,Apache Flex,Air,我一直在尝试通过当前的Air应用程序启动一个单独的Air应用程序 这两个应用程序都是使用AdobeAIR 2.0 SDK编译的 到目前为止,我发现的方法除了传递应用程序ID外,还包括传递发布者ID,但我认为发布者ID在Air 1.5.3之后变得多余了 下面是我当前的实现,它似乎正确地确定了Air应用程序的版本号,但当我尝试启动它时,似乎什么都没有发生 private static var _air:Object; private static var _loader:Loader; priva

我一直在尝试通过当前的Air应用程序启动一个单独的Air应用程序

这两个应用程序都是使用AdobeAIR 2.0 SDK编译的

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

下面是我当前的实现,它似乎正确地确定了Air应用程序的版本号,但当我尝试启动它时,似乎什么都没有发生

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);
}
}
我已在尝试加载的应用程序上更改了app-config.xml(应用描述符),以允许浏览器调用

我试图加载的应用程序的应用程序描述符的版本号是“V1”,versionDetectCallback似乎会选择它。如果是这样的话,我希望能够启动它,但事实似乎并非如此


有什么想法吗?

让第二个应用程序作为简单的Web SWF工作,并通过SWFLoader将其包括在内,可能会更好


您的二次空气应用目标是什么?为什么不只使用swf?

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


您的二次空气应用目标是什么?为什么不只使用swf?

在找到合适的文档后,我面临的问题似乎是我的方法

_air.launchApplication(appID,pubID);
需要从用户生成的事件(如单击处理程序)调用

此外,发布者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);
    }
}

在找到合适的文档后,我面临的问题似乎是我的方法

_air.launchApplication(appID,pubID);
需要从用户生成的事件(如单击处理程序)调用

此外,发布者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);
    }
}

我需要从一个“Dispatcher”AIR desktop应用程序启动不同的AIR desktop应用程序,我很难理解如何做到这一点。尝试不同的解决方案并不奏效。最后我找到了不同的方法。
更简单的方法是使用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”中的应用程序ID
  • 不要忘记设置allowBrowserInvocation=true;默认值为false。如果您忘记了,您尝试启动的应用程序将永远无法启动

  • 我需要从一个“Dispatcher”AIR desktop应用程序启动不同的AIR desktop应用程序,我很难理解如何做到这一点。尝试不同的解决方案并不奏效。最后我找到了不同的方法。
    更简单的方法是使用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”中的应用程序ID
  • 不要忘记设置allowBrowserInvocation=true;默认值为false。如果您忘记了,您尝试启动的应用程序将永远无法启动

  • 第二个应用程序完全独立于第一个应用程序,但不会有有限数量的应用程序。理想的解决方案是允许人们编辑配置文件,以便从主应用程序/第一个应用程序启动自己的应用程序第二个应用程序完全独立于第一个应用程序,但不会有数量有限的应用程序。理想的解决方案是允许人们编辑配置文件,以便从主/第一个应用程序启动自己的应用程序。如果这对您有效,请共享脚本。谢谢如果你想找到其他的方法,我想你也可以使用SystemBash文件/bat文件来运行一些外部的东西。如果这对你有用,你可以分享一下脚本吗。谢谢如果试图找到其他方法,imho也会感兴趣地使用SystemBash文件/bat文件来运行外部的东西。