Подтвердить что ты не робот

Adobe AIR для выполнения программы

Я хотел бы нажать кнопку из приложения Adobe AIR и выполнить некоторую установленную программу. Например, я бы нажал кнопку "Начать Winamp". Когда это будет нажато, он должен запустить Winamp.exe напрямую... Я не хочу, чтобы какая-то работа в командной строке выполнялась, мне нужно только запустить exe. Или... это одно и то же? Пожалуйста, дайте мне знать, если это возможно.

Спасибо.

4b9b3361

Ответ 1

Нет никакого прямого способа сделать это. Попробуйте CommandProxy.

Прочитайте блог очень внимательно. Вам действительно нужно создать два разных проекта: собственный исполняемый файл ОС и приложение AIR. Собственный исполняемый файл запускает ваше приложение AIR. Приложение AIR в свою очередь запрашивает исполняемый файл для обработки запросов на уровне ОС.

Загрузите источник из Google Code и создайте два проекта - Visual Studio/Mono для образца С# exe, а другой - для AIR. Здесь - ссылка, которая описывает, как настроить первый.

В главном файле MXML приложения AIR вы должны сделать следующее:

  • Создайте объект CommandProxy, добавьте несколько прослушивателей событий, для обнаружения соединений и Command ответ и ошибку.

  • Подключитесь к родному exe через вызов connect

  • В обработчике событий для connect создайте новый Command например. ScreenshotCommand и выполнить его (с помощью метода CommandProxy.execute)

... и что это!

Надеюсь, это поможет.

Ответ 2

С AIR 2.0 теперь вы можете:

if(NativeProcess.isSupported)
{
    var file:File = File.desktopDirectory;
    file = file.resolvePath("StyleLookupold.exe");

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    nativeProcessStartupInfo.executable = file;
    var process:NativeProcess = new NativeProcess();

    process.start(nativeProcessStartupInfo);

}

Вам также нужно добавить это в файл дескриптора.

<supportedProfiles>extendedDesktop</supportedProfiles> 

Ответ 3

Ответ состоит из двух частей. Один, если вы действительно ДОЛЖНЫ запускать .exe файл, единственный путь - использовать прокси-сервер. Лично, использование одного в .Net/Mono немного раздуто. Я не знаю Моно, но прошу ваших пользователей установить .Net и AIR будет пугать почти всех их. Плюс, если бы я попросил пользователей установить Mono, почему бы просто не написать UI в Mono и не сделать с ним...?

Вы можете написать простой прокси-сервер в Ruby, который действительно будет кросс-платформенным и с низким уровнем проблем примерно через 5 минут (я просто сделал это, если вы хотите, чтобы код комментировал меня здесь, и я опубликую его). Если вы хотите контролировать процесс после его запуска, это более серьезная работа. Для распространения и т.д. Я считаю, что Ruby будет проще.

С другой стороны, проверьте эту идею. Джефф предлагает использовать URL-запрос из AIR. В принципе, если ваш браузер правильно ее интерпретирует, вы готовы к работе. Код выглядит следующим образом:

var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u');

Я думаю, что с небольшим количеством творчества (особенно с типом Mime) это второе решение может даже работать на Winamp (например, плейлист или что-то еще).

Удачи вам и спасибо за этот вопрос, который, вероятно, является обманом, но Google только нашел этот, так что вы выиграли:)

Ответ 5

AIR 2.0 будет иметь эту возможность.

Ожидается, что он выйдет в бета-версии к концу года (2009) и отправит первую половину 2010 года.

http://blogs.adobe.com/air/2009/10/previewing_adobe_air_2_at_adob.html

Собственный API процесса Начиная с AIR 2, разработчики получат доступ к API-интерфейсу собственного процесса, который позволит приложениям вызывать и связываться с родными приложениями на локальном компьютере. Чтобы сохранить кросс-платформенный характер формата файла .air, приложения, которые используют API-интерфейс собственного процесса, должны быть развернуты как собственные инсталляторы, такие как .exe и .dmg. SDK для среды выполнения AIR будет включать поддержку для генерации базовых встроенных инсталляторов.

Ответ 6

Смотрите это сообщение в блоге: Запустите exe файл из AIR

Краткое описание:

"Если вам действительно нужно запустить внешний exe, и нет другого способа решения вашей проблемы, тогда вы будете убедитесь, что пользователь запускает это другое программное обеспечение перед запуском AIR".

Ответ 7

Прямо сейчас, нет никакого способа сделать это изначально с AIR. Есть несколько вариантов:

  • Shu
  • Red5 работает на localhost
  • Создайте службу, которая запускается на пользовательском компьютере, и подключитесь к ней с помощью сокетов.

Ответ 8

Другой способ сделать это - запустить простой веб-сервер на локальном компьютере (в фоновом режиме) и вызвать его методы с помощью HTTPService.

Фоновый веб-сервер может быть, например, в python: http://fragments.turtlemeat.com/pythonwebserver.php

И он может запускать исполняемые файлы и предоставлять функции, которые AIR не может.

Это сохраняет код Flex чистым, поскольку он только реализует интерфейс REST и python (или другой язык) всю оставшуюся работу. Вы также можете использовать python в качестве интерфейса для базы данных sqlite, или вы можете запустить целое django в качестве веб-сервера.

Единственным недостатком является то, что сервер должен быть уже запущен на localhost.. и прослушивать какой-то порт (т.е. 81). вы, вероятно, можете сделать это, запустив сервер при запуске системы.

Это не лучший способ, но в некоторых случаях это может помочь вашему проекту, как и для меня.

Ответ 9

в mac os x, если вы хотите запустить файл .app, тогда вам нужно написать следующее для пути к файлу. (Предположим, что имя приложения xxx)

if(NativeProcess.isSupported)
{
    //not correct
    //file = file.resolvePath("/Applications/xxx.app");

    //correct
    file = file.resolvePath("/Applications/xxx.app/Contents/MacOS/xxx");

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    nativeProcessStartupInfo.executable = file;
    var process:NativeProcess = new NativeProcess();

    process.start(nativeProcessStartupInfo);

}

Ответ 10

Или просто мой веб-сайт создайте собственный установщик для нового приложения.

http://board.flashkit.com/board/showthread.php?834579-Embed-exe-file-from-swf-to-write-to-local-directory

Бонусный совет: Мы рекомендуем использовать Enigma Virtual Box, потому что он бесплатный, и он очень хорош для Application Virtualization или Exe-Packer, такого как BoxedApp Packer, но он стоит очень дорого, чем Enigma Virtual Box Спасибо!