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

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

2013-12-23 13:26 316 查看
昨天折腾了一个晚上,终于把我写的美女时钟桌面的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-cnsolosky-osolosky.net1024-RSASigningCert.p12god!1#$


参数说明如下:

-certificate当前命令为生成签名文件
-cnsolosky分配的作为新证书公共名称,必须。这里是solosky
-osolosky.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-storetypepkcs12-keystore../shells/SigningCert.p12-keypassgod!1#$girlclock-1.0.airgirlclock-air.xml
.


参数说明如下:

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

-keypassgod!1#$签名文件的私钥,创建签名文件的时候输入的密码,运行之后仍需输入一次
girlclock-1.0.air输出的air发布程序名,一般都以air为后缀
girlclock-air.xml应用程序的描述文件
.打包的目录,.表明是当前目录,切记别忘记最后面的一点

命令执行完毕,在当前目录会生成girlclock-1.0.air的air部署文件,整个打包过程完成;更多关于adt打包信息请参考
使用AIRDeveloperTool(ADT)打包AIR安装文件


如何生成exe可执行程序

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

展开源代码查看源代码

打印关于

1.
adt-package-storetypepkcs12-keystore../shells/soloskyAirSign.p12-keypassgod!1#$-targetnativegirlclock-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安装包文件(AdobeAIRBadgeInstaller),并解压;
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.
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

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

03.
<head>

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

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

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

07.
</head>

08.
<body>

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

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

11.
程序安装需要FlashPlayer6.0.65或者更高版本的FlashPlayer。

12.
</div>

13.
<scripttype="text/javascript">

14.
//<![CDATA[

15.

16.
//version9.0.115orgreaterisrequiredforlaunchingAIRapps.

17.
varso=newSWFObject("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","");//publisherid

28.

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

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

31.

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

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

34.

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

36.
so.addVariable("appinstallarg","installedfromweb");//passedtotheapplicationwhenitisinstalledfrom
thebadge

37.
so.addVariable("applauncharg","launchedfromweb");//passedtotheapplicationwhenitislaunchedfrom
thebadge

38.
so.addVariable("helpurl","help.html");//optionalurltoapagecontainingadditionalhelp,displayedin
thebadge'shelpscreen

39.
so.addVariable("hidehelp","false");//hidesthehelpiconif"true"

40.
so.addVariable("skiptransition","false");//skipstheinitialtransitionif"true"

41.
so.addVariable("titlecolor","#00AAFF");//changesthecoloroftitles

42.
so.addVariable("buttonlabelcolor","#00AAFF");//changesthecolorofthebuttonlabel

43.
so.addVariable("appnamecolor","#00AAFF");//changesthecoloroftheapplicationnameiftheimageisnot
specifiedorloaded

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无缝安装包(AdobeAIRBadgeInstaller)请参考
Gettingstartedwiththecustominstallbadge

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应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航