Posts Tagged ‘AIR’

air能不能启动外部exe?

星期六, 1月 10th, 2009

在Windows环境中,AIR可以启动外部程序吗?

答案目前来说是不可以的。我想安全考虑是这样的,假如AIR可以自由调用windows的API和程序的话,那么AIR无疑能做很多事情,包括修改AIR的运行时本身,这样只要有一个AIR插入了危险代码,那么整个AIR运行时都不再安全,无疑AIR会成为病毒非常容易的入侵点。再加上AIR程序可以自动升级,令危险代码的部署就变得更容易了。

那么AIR不是还能访问本地文件吗?

AIR访问本地文件其实是有限制的:

http://help.adobe.com/zh_CN/AIR/1.1/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7f05.html

文中说明了一些应用程序沙箱,对应的flash程序的访问权限是受沙箱的限制的。

沙箱 说明
应用程序 文件位于应用程序目录中,并且使用完全 AIR 权限运行。
远程 文件来自 Internet URL,并且通过基于域的沙箱规则运行,该规则与适用于 Flash Player 中的远程文件的规则类似。(每个网络域都具有单独的远程沙箱,例如 http://www.example.com 和 https://foo.example.org。)
受信任的本地 文件为本地文件,且用户已使用“设置管理器”或 Flash Player 信任配置文件将其指定为受信任。文件可以从本地数据源读取数据并且与 Internet 通信,但不具有完全 AIR 权限。
只能与远程内容交互 文件为使用网络名称发布的本地 SWF 文件,但尚未受到用户的显式信任。文件可以与 Internet 进行通信,但不能从本地数据源读取数据。此沙箱仅可用于 SWF 内容。
只能与本地文件系统内容交互 文件为未使用网络名称发布的本地脚本文件,且尚未受到用户的显式信任。文件包含尚未受到信任的 JavaScript 文件。文件可以从本地数据源读取数据,但无法与 Internet 进行通信。

AIR程序所能访问的文件必须位于应用程序目录下。

==============================================================

当然,题目的问题可以改一个思路。比如先启动一个监控作用的monitor.exe,然后这个monitor.exe调用air程序,并与其进行socket或文件形式的交互,再由monitor.exe去启动air需要的外部程序。

Adobe的AIR badge installer依赖于UPnP

星期一, 12月 15th, 2008

我为了把.air程序和AIR环境一起安装,搜索了一下方案,很快就找到了Adobe官方所提供的badge的例子。

可惜的是,搭起来之后,发现局域网里面的有些机器安装不了AIR环境,转了两圈就告诉下载错误,而公网上的服务器是没有问题的。

于是怀疑是防火墙的问题,到路由器上看了一下,能限制的就只有UPnP是关闭着的,于是把路由器的UPnP打开。再下载AIR,一切正常。

看来badge 网页安装,是用P2P的方式进行下载的,难怪速度那么快。

FLEX AIR的URL ENCODE问题

星期一, 12月 8th, 2008

在某工程中,获取了一个pdf文件的url,目标文件是中文的,在windows server的iis+php上。程序得到pdf的url之后,就是用HTMLLoader去打开它。

这个AIR程序在我的机器上是好用的,放别的机器上就出现404了。我猜是文件名中文在别的环境中被utf8 encode过了。所以换了个英文文件名的文件,没有问题。所以确定是中文文件名。

解决方法就是在往air程序里面推送url的时候,把中文文件名部分用urlencode方法。

——————————————————————–

另外一个问题是AIR安装环境和AIR程序同时自动安装的方案,每次都出现AIR安装文件无法获取的问题,直接用IE去请求这个.air文件,错误是404.3。查了下,是IIS的默认MIME类型里面没有,需要添加。

在相关目录下添加.air的MIME类型:

iis

HTTP 头

MIME类型

新建

扩展名填 .air

MIME类型填  application/octet-stream
解决了。

总结一下,其实不是多复杂的问题,不过adobe的官方网站似乎不会给那么详细的内容。