Я бы хотел создать специальную программу запуска AIR на языке C по образцу java.exe.
Я посмотрел на запуск программ AIR с помощью средства просмотра процессов и смог найти используемую библиотеку времени выполнения AIR. Программы AIR отличаются от Java тем, что они устанавливаются как специфичные для платформы исполняемые файлы, которые связывают среду выполнения AIR как разделяемую библиотеку в процессе после запуска (их значок дважды щелкается пользователем).
Ну, я хочу сделать AIR Launcher, который вместо этого похож на java.exe.
java.exe запускается как процесс ОС платформы, который связывается со средой выполнения JVM Java (JRE) как разделяемая библиотека в процессе. Java-приложение, которое должно быть выполнено, указывается в качестве аргумента командной строки для java.exe. После запуска java.exe и полной функциональности JVM указанный класс приложения java загружается загрузчиком классов JVM для выполнения. Это указанное Java-приложение затем берет на себя управление, в некотором смысле «захватывая» процесс java.exe. Конечно, указанное приложение java отображается в любом списке процессов как программа java.exe, в которой оно размещено.
Я хочу, чтобы запуск приложения AIR работал следующим образом. Зачем? Поэтому я могу исследовать способы взлома AIR и, возможно, преодолеть некоторые из его многочисленных недостатков. Например, для начала я хочу расширить среду выполнения AIR с помощью некоторых новых API, которые становятся доступными для работающего приложения AIR.
Мой первый заказ будет:
- Реализовать обязательный интерфейс
ActionScript3 в C, который сопоставим
в .NET PInvoke
- Добавить API для запуска процесса, который
сопоставимо с API, найденными в
Java SE для этого (Runtime.exec,
ProcessBuilder, Process)
- Добавить поддержку приложения AIR в
быть в состоянии взаимодействовать с STDIN,
стандартный вывод, стандартный вывод Странно, хотя
Adobe добавила поддержку локального файла
доступ в AIR они пропустили
взаимодействие с этим стандартным файлом
трубы (пока они есть на любом
Платформа ОС, поддерживаемая AIR).
- Реализовать поддержку AMF через стандартный ввод,
stdout, stderr - так AIR (или Java или
любые приложения с поддержкой AMF)
межпроцессное взаимодействие через
обмен объектами AMF. Это добавило бы
прикосновение Microsoft PowerShell
в воздух.
В настоящее время Merapi предоставляет мост AMF с Java, что демонстрирует эффективность этого. Увы, Merapi должен использовать локальный порт и сокет для межпроцессного взаимодействия - это неуклюжий способ вместо использования межпроцессных каналов stdin / stdout / stderr.