Як захоўваць і выкарыстоўваць роднай выкананы ў МЖК з AIR?

Я займаюся распрацоўкай прыкладання AIR. Гэта дадатак патрабуе некаторых апаратных доступы, якія немагчымыя з AIR. Я вырашыў выкарыстоўваць клас NativeApplication ў AIR, якая запускае C# выкананы файл. Прыкладання AIR і «родныя» прыкладанні затым ўзаемадзейнічаць са стандартным вывадам і стандартнымі уваходнымі патокамі.

Трохі нагадвае, што:

private var np:NativeProcess = new NativeProcess();
private var npi:NativeProcessStartupInfo = new NativeProcessStartupInfo();
private var args:Vector. = new Vector.();

private function creationCompleteHandler(event:FlexEvent):void {
   args.push("myCommand");
   args.push("myParameter");
   npi.arguments = args;
   npi.executable = File.applicationDirectory.resolvePath("MyNativeExe.exe");
   np.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onData);
   np.start(npi);
}

private function onData(e:ProgressEvent):void {
   while(np.standardOutput.bytesAvailable != 0) {
     trace(String.fromCharCode(np.standardOutput.readByte()));
   }
}

Я паклаў MyNativeExe.exe файл у каталогу прыкладання, пастаўце «extendedDesktop» у * -app.xml supportedProfiles, і яна выдатна працуе.

Цяпер я хацеў бы стварыць свайго роду бібліятэку AS3 SWC, які ўбудоўвае MyNativeExe.exe і якія забяспечваюць клас AS3 для кіравання узаемадзеяннем з MyNativeExe.exe. Таму я мог бы лёгка выкарыстоўваць гэтую працу ў іншых праектах AIR проста addind ў SWC-файл у якасці бібліятэкі. Я, магчыма, прыйдзецца ўручную дадаць значэнне «extendedDesktop» для новых праектаў AIR, але гэта не праблема.

І я затрымаўся. Я магу ўстаўляць файл EXE ў SWC файл ўручную, выбіраючы рэсурсы для ўкаранення з Flash Builder, але ...

  • ён не будзе аўтаматычна змясціць яго ў канчатковым SWF-файла, як толькі неабходныя часткі SWC файл зьлітыя з SWF
  • , нават калі ён (выкананне зліцця з [Embed] тэг, ...), як я магу атрымаць доступ і выканаць укладзены файл EXE? NativeProcessInfo.executable патрэбен аб'ект файла, а не струмень байтаў.

Адзіная ідэя, я павінен быў бы ўбудаваць файл EXE з [Embed], загрузіце яго ў выглядзе масіва байтаў, стварыць новы файл з масівам байтаў ў выглядзе дадзеных, а затым запусціце файл. Я не ведаю, калі гэта працуе, але мне не падабаецца ідэя, бо гэта азначае, маючы EXE выгляду дублюецца.

Ці ёсць хто-небудзь ёсць ідэі?

Дзякуй!

2

1 адказы

Вы павінны глядзець у Air Native Extensions . Прасцей кажучы, адна з асаблівасцяў новага ў Air 3.0 была магчымасць кампіляцыі і спасылка на пашырэння карыстацкага мовы непасрэдна з паветра. Я не знайшоў прыклад выкарыстання C# непасрэдна, але ёсць на гэтай старонцы рабіць з кіраваным C ++.

1
дададзена
Зараз, здаецца, што будуе роднае пашырэнне крыху больш складана. Няма аўтаматызаваны інструмент, шмат рэчаў, каб зрабіць уручную або з дапамогай сцэнарыяў для запісу. Гэта можа быць рашэннем, але цяпер, я хутчэй зацікаўлены, маючы адказ на шлях NativeProcess і заставацца зручнымі з дапамогай інструментаў Flash Builder :-)
дададзена аўтар Vincent Hiribarren, крыніца
@VincentHiribarren, калі вы не збіраецеся выкарыстоўваць АНХ, тады ваша іншая ідэя ў значнай ступені адзіны спосаб зрабіць гэта. Я хацеў бы стварыць часовую тэчку (з File.createTempDirectory() ), а затым запісаць ByteArray у файл у гэтай тэчцы, а затым новы NativeProcess </код > так, што вы робіце гэта. Проста пераканайцеся, каб ачысціць гэтую часовую тэчку, калі вы скончыце. Ня прыгожанькую рашэнне, але яно будзе працаваць.
дададзена аўтар James Holmes, крыніца