您的位置:首页 > 大数据 > 人工智能

如何打包和部署air应用程序

2013-12-23 13:26 519 查看
昨天折腾了一个晚上,终于把我写的美女时钟桌面 的air应用程序给发布出去了,在发布的过程中还出现了点问题(下文有说明),不过总算解决了累死我了。 Air应用程序的部署和发布不是一般的麻烦,想来很多和我一样的Air初学开发者在部署Air应用程序可能都不知道怎么做,于是我写了这篇文章,希望能对你有所帮助。 如果你想发布一个Air程序,需要两个步骤,打包和部署。下面对这两个步骤都做详细的说明。本文以上次发布的

美女时钟桌面 作为示例。

一、打包Air应用程序

步骤1. 生成签名文件(数字证书, CA)

Air的应用程序签名(CA)是强制,不签名无法打包应用程序,签名基于RSA不对称加密,生成一对公钥和私钥,使用私钥加密应用程序,同时公布把公钥打包到应用程序中,可以防止其他用户修改发布的Air应用程序然后再发布。 一般来说,获得签名文件的方法有两种:

1) 可以向安全的证书管理机构如VeriSign或Thawte获取证书,这种证书是安全的,并且Air安装程序可以自动联网获取证书信息,如签名者,颁发机构,有效期等。如果联网能查到当前Air安装程序的信息,表明这个程序是未被修改的,原始程序。当然这个需要交纳一定的费用,如果你是开发一个完整的应用程序,并且能保证随时更新,还是建议你使用这种方式获取签名文件。

2) 使用 ADT 创建自签名证书,您可以生成有效的 AIR 安装文件,但由于无法验证自签名证书的可靠性,因此该证书只能向用户提供有限的安全保证。当安装自签名 AIR 文件时,发行商信息将对用户显示为“未知”。ADT 生成的证书有效期为五年。如果只是测试Air应用程序,推荐这种方式。

这里采用第二种方式发布,简单,免费,方便。 首先请确保 命令 AdobeAIRSDK/bin/adt.bat (linux下为adt)在环境变量中,然后执行以下命令:

展开源代码查看源代码

打印关于

1.
adt -certificate -cn solosky -o solosky.net 1024-RSA SigningCert.p12 god!1#$


参数说明如下:

-certificate 当前命令为生成签名文件
-cn solosky 分配的作为新证书公共名称,必须。这里是solosky
-o solosky.net 被分配作为证书颁发组织名字。可选。这里是solosky.net
1024-RSA 用于证书的密钥类型,即“1024-RSA”或“2048-RSA”,必须,这里是1024-RSA
SigningCert.p12 保存证书的文件名字,必须,这里是SigningCert.p12
god!1#$ 签名私钥,以后签名程序的时候需要输入这个密码,必须,这里是god!1#$
执行完毕后会在当前目录生成一个SigningCert.p12的签名文件,请妥善保管好这个文件,以后更新程序的时候需要使用相同的签名文件签名程序,否则无法完成更新操作; 更多关于adt签名的信息请参考这里

对 AIR 应用程序进行签名

步骤2. 打包Air应用程序

生成签名文件之后,接下来就可以直接打包为.air的安装文件了。 首先用cd命令进入air应用程序目录,然后执行以下命令

展开源代码查看源代码

打印关于

1.
adt -package  -storetype pkcs12 -keystore ../shells/SigningCert.p12 -keypass god!1#$ girlclock-1.0.air girlclock-air.xml
.


参数说明如下:

-package 当前命令为打包air应用程序
-storetype pkcs12 签名密钥类型,保持不变
-keystore ../shells/SigningCert.p12 签名文件地址,切记一定不要放在应用程序目录下,否则签名文件也会打包到应用程序。。。

-keypass god!1#$ 签名文件的私钥,创建签名文件的时候输入的密码,运行之后仍需输入一次
girlclock-1.0.air 输出的air发布程序名,一般都以air为后缀
girlclock-air.xml 应用程序的描述文件
. 打包的目录,.表明是当前目录,切记别忘记最后面的一点
命令执行完毕,在当前目录会生成girlclock-1.0.air的air部署文件,整个打包过程完成; 更多关于adt打包信息请参考
使用 AIR Developer Tool (ADT) 打包 AIR 安装文件

如何生成exe可执行程序

你还可以指定target native参数,生成本地的可执行文件(window下为exe,linux为deb或者rpm,MacOS为dmg),但这就丧失的air的跨平台性。 如下命令将会生成girlclock-1.0.exe文件:

展开源代码查看源代码

打印关于

1.
adt -package  -storetype pkcs12 -keystore ../shells/soloskyAirSign.p12 -keypass god!1#$  -target native girlclock-1.0.exe
girlclock-air.xml .


如果生成本地可执行文件,请注意以下几点:

1. 这种发布文件无法通过下面的网页部署方式部署;
2. 可以直接把可执行文件发布出去,用户下载可执行文件,第一次运行时会自动检测Air运行时环境,如果没有会自动下载安装,满足安装条件后会自动安装到系统中,并在开始菜单中创建快捷方式,系统程序卸载工具中创建卸载方式;

3. 如果你的应用程序需要支持NativeProcess(即supportedProfiles配置为extendedDesktop),则必须采用这种方式打包和部署,我在这里纠结了很久;

4. 无法支持Air的Update框架,但有开源的解决方案(请google之);

二、部署应用程序

因为Air应用程序运行需要Air运行时环境,所以部署起来有点复杂,这里提出了三种部署方式,建议在发布air应用程序的时候,这三种方式都采用,尽量让所有的用户都能顺利的安装上air应用程序;

1. Web部署

这种方式只适合打包类型为.air类型的应用程序的部署。 直接把.air的文件提供给用户下载是不行的,因为Air应用程序运行需要Air运行时环境,所以假如用户没有安装air运行时环境,就无法运行.air的应用程序。好在air官方发布了一个统一的安装包,可以在网页上直接安装air应用程序,并且会自动检测用户是否安装air运行时环境,如果没有会自动下载安装,提供了无缝的安装体验,非常的方便,只不过部署起来比较麻烦:

1. 先从官方网站下载
air安装包文件(Adobe AIR Badge Installer),并解压;
2. 建立web目录,把生成的.air应用程序文件(girlclock-1.0.air),以及解压之后的安装包文件里面的AIRInstallBadge.swf,swfobject.js,expressinstall.swf四个文件复制到web目录下;

3. 为你的应用程序截图,调整大小为205×170像素,重命名为snap.png也复制到web目录中;
4. 新建一个文件deploy.html,复制下面的内容到这个文件里,然后修改部分参数,保存(当然你也可以复制到你的发布页中,注意一定要包含swfobject.js脚本);

展开源代码查看源代码

打印关于

01.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

02.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">

03.
<head>

04.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

05.
<title>美女时钟桌面 v1.0 在线安装</title>

06.
<script type="text/javascript" src="swfobject.js"></script>

07.
</head>

08.
<body>

09.
<div id="flashcontent" style="width:215px; height:180px;">

10.
<strong>请升级你的Flash Player。</strong>

11.
程序安装需要 Flash Player 6.0.65 或者更高版本的Flash Player。

12.
</div>

13.
<script type="text/javascript">

14.
// <![CDATA[

15.
 
 
16.
// version 9.0.115 or greater is required for launching AIR apps.

17.
var so = new SWFObject("AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");

18.
so.useExpressInstall('expressinstall.swf');

19.
 
 
20.
// 下面的参数在网页安装air应用程序的是必须的

21.
so.addVariable("airversion", "2.5"); // 修改为运行你的air应用程序需要的最低运行时环境版本

22.
so.addVariable("appname", "GirlClock"); // 修改为应用程序名,将会在安装界面上显示给用,仅支持英文....

23.
so.addVariable("appurl", "http://labs.solosky.net/air/girlclock/girlclock-1.0.air");
//你的.air打包文件的绝对地址,必须以http或者https开头

24.
 
 
25.
// 下面的参数在网页启动air应用程序是必须的,但安装时是可选的,

26.
so.addVariable("appid", "net.solosky.girlclock"); // 应用程序Id,命名方式类型于java的包命名方式(ex. com.gskinner.air.MyApplication)

27.
so.addVariable("pubid", ""); // publisher id

28.
 
 
29.
// 这个参数是可以为airy应用提供在线升级支持

30.
so.addVariable("appversion", "1.0"); //你的应用程序版本

31.
 
 
32.
// 下面的参数是可选的

33.
so.addVariable("image", "snap.png"); // 应用程序截图(205x170像素),推荐设置

34.
 
 
35.
//下面的参数请根据自己需要修改

36.
so.addVariable("appinstallarg", "installed from web"); // passed to the application when it is installed from
the badge

37.
so.addVariable("applauncharg", "launched from web"); // passed to the application when it is launched from
the badge

38.
so.addVariable("helpurl", "help.html"); // optional url to a page containing additional help, displayed in
the badge's help screen

39.
so.addVariable("hidehelp", "false"); // hides the help icon if "true"

40.
so.addVariable("skiptransition", "false"); // skips the initial transition if "true"

41.
so.addVariable("titlecolor", "#00AAFF"); // changes the color of titles

42.
so.addVariable("buttonlabelcolor", "#00AAFF"); // changes the color of the button label

43.
so.addVariable("appnamecolor", "#00AAFF"); // changes the color of the application name if the image is not
specified or loaded

44.
 
 
45.
so.write("flashcontent");

46.
 
 
47.
//更多参数请参见
 http://www.adobe.com/devnet/air/articles/badge_for_air.html

48.
// ]]>

49.
</script>

50.
</body>

51.
</html>


现在整个目录的内容如下图:


5. 将web目录下面的所有文件上传到你的网站服务器上,然后输入deploy.html查看是否出现安装提示。如下图:


更多关于air无缝安装包(Adobe AIR Badge Installer)请参考
Getting started with the custom install badge

2. 本地程序部署

使用上面的打包方法打包为本地应用程序,如indow下为exe,linux为deb或者rpm,MacOS为dmg,可以直接双击执行,但不包含air运行时环境,当用户运行应用程序的时候会自动自动检测系统是否已经安装air运行时环境,如果没有会自动下载并安装。 这种类型的发布程序部署比较简单,直接发布出去即可,

3. 包含air运行时环境部署

这种方式可以直接把air运行时环境和air应用程序打包在一起,而不用考虑用户是否已经安装了air运行时环境。但由于包含了air运行时环境,所以有点大,大概20M左右的大小,对于无法联网或者自动安装失败的用户可以尝试使用这种方式发布。 网上的方案比较多,这里还是推荐
梦宇工作室 编写的
AirLauncher 来打包air应用程序。 遗憾的是仅支持windows。原理很简单,就是启动进程调用adl命令启动程序,但没有命令行窗口。

1. 首先建立pack目录,然后把应用程序的所有文件都复制到pack目录中;
2. 在pack目录中建立AdobeAIRSDK目录,并把AIRSDK目录下面的bin和runtimes复制到pack/AdobeAIRSDK下;
3. 复制AirLauncher.exe到pack目录下,并修改应用程序描述符为application.xml;双击运行AirLauncher.exe看能否启动air程序,如果能,工作完成了大部分href=”http://flexlessons.googlecode.com/files/ResHacker%203.5.zip”>ResHack修改;整个文件目录结构如下图:


4. 你可以重命名AirLauncher.exe为你的应用名称,如girlclock.exe,程序图标可以使用
5. 打包pack目录下的所有文件为.zip文件,并发布这个压缩文件到网页上即可。
你可以在这里查看AirLauncher的作者更详细的打包教程:用WinRAR制作脱离AIR运行时的AIR程序安装包

上面三种方式都可以完成air应用程序的部署,推荐使用Web部署和本地部署,包含air运行时环境部署也建议一并发布,如果每一种方式不可用,可以尝试其他的安装方法。尽量让每个用户都能用上你写的air应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐