多次启动Adobe AIR应用程序

abc*_*abc 12 air flash

Adobe air运行时可以防止同时启动多个air应用程序实例.通过随意更改发布者ID来规避此限制是否安全?有谁知道Adobe是否计划在Air 2.0中允许多个并发实例?

Tyn*_*Tyn 21

我们成功实现了一个黑客来以一种纯粹的AIR方式来规避这种限制,而不必更改发布者ID(我认为这需要多个证书).

如您所知,AIR通过使用唯一的应用程序标识符来实现其Mutex.此标识符使用应用程序ID和发布者标识符(从签署应用程序的证书中提取)计算.

在AIR应用程序的安装目录中,有一个META-INF文件夹(或在/ share/using Linux中).此META-INF文件夹包含AIR文件夹,其中包含"application.xml"文件.此文件包含<id />定义应用程序标识符的标记,该标记用于计算互斥锁标识符.如果您的应用程序可以在安装文件夹中写入,则可以使用FileAPI在运行时编辑它,随机更改<id />标记,允许同时运行同一应用程序的多个进程.

这有一些恼人的副作用,比如File.applicationStorageDirectory每次在文件夹中创建一个新文件夹.但是使用a LocalConnection,您可以通过记录哪些可以重复使用来重复使用相同的标识符来最小化这一点.此外,SharedObject存储在此文件夹中,因此无法使用(或者必须在每次创建新实例时进行复制,并进行同步LocalConnection).

据我所知,Adobe并不打算删除此原生限制.它是为多平台目的而实现的,特别是在MacOS上,其中扩展坞使得更复杂(使用扩展坞两次启动相同的应用程序并不容易).

这样做的官方方法是捕捉InvokeEvent.INVOKE事件,并做一些事情,比如打开一个新窗口.并且在此行为中没有为AIR 2.0计划更改.