2010-09-01 166 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。如果您忘記了,您試圖啓動的應用程序永遠不會啓動。