Adobe AIR для выполнения программы
Я хотел бы нажать кнопку из приложения Adobe AIR и выполнить некоторую установленную программу. Например, я бы нажал кнопку "Начать Winamp". Когда это будет нажато, он должен запустить Winamp.exe напрямую... Я не хочу, чтобы какая-то работа в командной строке выполнялась, мне нужно только запустить exe. Или... это одно и то же? Пожалуйста, дайте мне знать, если это возможно.
Спасибо.
Ответы
Ответ 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 только нашел этот, так что вы выиграли:)
Ответ 4
Я думаю, что FluorineFx делает то, что вы хотите: http://aperture.fluorinefx.com/?p=5
Ответ 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 Спасибо!