запущение приложения Adobe AIR многократно

Среда выполнения Adobe AIR предотвращает больше чем один экземпляр воздушного приложения, которое будет запущено одновременно. Действительно ли безопасно обойти это ограничение путем произвольного изменения идентификатора издателя? Кто-либо знает, планирует ли Adobe позволить несколько параллельных экземпляров в Воздухе 2.0?

12
задан abc 7 February 2010 в 15:48
поделиться

2 ответа

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

Как вы знаете, AIR реализует свой Mutex с использованием уникального идентификатора приложения.Этот идентификатор вычисляется с использованием идентификатора приложения и идентификатора издателя (извлеченного из сертификата, которым подписано приложение).

В каталоге установки приложения AIR есть папка META-INF (или в / share / в Linux). Эта папка META-INF содержит папку AIR, которая содержит файл «application.xml». Этот файл содержит тег , который определяет идентификатор приложения, который используется при вычислении идентификатора мьютекса. Если ваше приложение может писать в папке установки, вы можете использовать API File для редактирования его во время выполнения, произвольно изменяя тег , что позволяет нескольким процессам одного и того же приложения. работать одновременно.

Это имеет неприятные побочные эффекты, например создание новой папки в папке File.applicationStorageDirectory каждый раз. Но используя LocalConnection , вы можете минимизировать это, повторно используя один и тот же идентификатор несколько раз, регистрируя, какие из них можно использовать повторно. Кроме того, в этой папке хранятся SharedObject , поэтому их нельзя использовать (или их нужно копировать каждый раз, когда создается новый экземпляр и синхронизируется через LocalConnection ).

Насколько мне известно, Adobe не планирует снимать это родное ограничение. Он был реализован для мультиплатформенных целей, в частности, в MacOS, где док-станция усложняет задачу (не очень просто запустить одно и то же приложение дважды с док-станцией).

Официальный способ сделать это - поймать InvokeEvent.INVOKE и делать такие вещи, как открытие нового окна. И в AIR 2.0 не планируется никаких изменений в этом поведении.

21
ответ дан 2 December 2019 в 06:45
поделиться
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
-121--777919-

Поможет ли вам инкапсуляция логики приложения как класса, который может работать в окне и позволять пользователю создавать несколько экземпляров этого окна в одном приложении? поможет ли это?

Какова основная причина, по которой вам потребуется несколько приложений?

1
ответ дан 2 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

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