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

Ваш скрипт не работает с введенным вами вводом (если вы на самом деле добавляете отсутствующий аргумент), потому что '{\"change_request\":\"chg0123456\"}' это не то, что JS может анализировать как строку JSON. Кроме того, вы не передаете в скрипт никаких пустых значений из своего ввода (просто пустое пространство не считается фактическим вводом).

Вам нужно изменить его на '{"change_request":"chg0123456"}' и передать пустое значение в виде пустой строки ''.

Этот вход работает правильно.

node index.js DELETE https://Test1234.execute-api.us-west-2.amazonaws.com us-west-2 /qa/transit-connectivity/api/v1/sites/tdcloudtsttd03 AKIAJ4Y5DGqwewqeqw CFdAgsdtqweqwe/SKqDezdqweewofWrUXXBbQoMy '' '{"change_request":"chg0123456"}'

Если вам действительно нужен объект в этом формате, то вам нужно удалить из него \ символов, прежде чем вы сможете вызвать JSON.parse для него.

awsAdditionalParams = JSON.parse(
    process.argv[9].split('\\').join('') || '{}'
);

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

awsAdditionalParams = process.argv[9]
    ? JSON.parse(process.argv[9].split('\\').join('') || '{}')
    : '';
32
задан Chris 2 May 2014 в 23:56
поделиться

8 ответов

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

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

Загрузка источник от Google Code и создают два проекта - Visual Studio / Моно для демонстрационного C# exe и другого - для приложения AIR. Здесь ссылка, которая описывает, как настроить первого.

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

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

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

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

... и вот именно!

Hope это помогает.

11
ответ дан 27 November 2019 в 20:01
поделиться

Посмотрите это сообщение в блоге: Выполнение EXE-файл из краткого изложения AIR

:

, "Если действительно необходимо выполнить внешние EXE-файлы, и нет никакого другого способа решить проблему, тогда Вы удостоверитесь, что пользователь запускает то другое программное обеспечение прежде, чем запустить приложение AIR".

1
ответ дан 27 November 2019 в 20:01
поделиться

Прямо сейчас нет никакого способа сделать это исходно с AIR. Существуют некоторые опции, хотя:

  • Shu
  • Red5, работающий на localhost
  • , Создает сервис, который работает на машине пользователя и подключении к ней с помощью сокеты .
1
ответ дан 27 November 2019 в 20:01
поделиться

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

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

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

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

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

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

4
ответ дан 27 November 2019 в 20:01
поделиться

Я думаю, FluorineFx делает то, что вы хотите: http://aperture.fluorinefx.com/?p=5

3
ответ дан 27 November 2019 в 20:01
поделиться

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 будет включать поддержку создания базовых встроенных установщиков.

3
ответ дан 27 November 2019 в 20:01
поделиться

В 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> 
65
ответ дан 27 November 2019 в 20:01
поделиться

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

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

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

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

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

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

1
ответ дан 27 November 2019 в 20:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: