如何打包和部署air应用程序
2013-12-23 13:26
316 查看
昨天折腾了一个晚上,终于把我写的美女时钟桌面的air应用程序给发布出去了,在发布的过程中还出现了点问题(下文有说明),不过总算解决了累死我了。Air应用程序的部署和发布不是一般的麻烦,想来很多和我一样的Air初学开发者在部署Air应用程序可能都不知道怎么做,于是我写了这篇文章,希望能对你有所帮助。如果你想发布一个Air程序,需要两个步骤,打包和部署。下面对这两个步骤都做详细的说明。本文以上次发布的
美女时钟桌面作为示例。
1)可以向安全的证书管理机构如VeriSign或Thawte获取证书,这种证书是安全的,并且Air安装程序可以自动联网获取证书信息,如签名者,颁发机构,有效期等。如果联网能查到当前Air安装程序的信息,表明这个程序是未被修改的,原始程序。当然这个需要交纳一定的费用,如果你是开发一个完整的应用程序,并且能保证随时更新,还是建议你使用这种方式获取签名文件。
2)使用ADT创建自签名证书,您可以生成有效的AIR安装文件,但由于无法验证自签名证书的可靠性,因此该证书只能向用户提供有限的安全保证。当安装自签名AIR文件时,发行商信息将对用户显示为“未知”。ADT生成的证书有效期为五年。如果只是测试Air应用程序,推荐这种方式。
这里采用第二种方式发布,简单,免费,方便。首先请确保命令AdobeAIRSDK/bin/adt.bat(linux下为adt)在环境变量中,然后执行以下命令:
展开源代码查看源代码
打印关于
参数说明如下:
-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应用程序进行签名
展开源代码查看源代码
打印关于
参数说明如下:
-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安装文件
展开源代码查看源代码
打印关于
如果生成本地可执行文件,请注意以下几点:
1.这种发布文件无法通过下面的网页部署方式部署;
2.可以直接把可执行文件发布出去,用户下载可执行文件,第一次运行时会自动检测Air运行时环境,如果没有会自动下载安装,满足安装条件后会自动安装到系统中,并在开始菜单中创建快捷方式,系统程序卸载工具中创建卸载方式;
3.如果你的应用程序需要支持NativeProcess(即supportedProfiles配置为extendedDesktop),则必须采用这种方式打包和部署,我在这里纠结了很久;
4.无法支持Air的Update框架,但有开源的解决方案(请google之);
美女时钟桌面作为示例。
一、打包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的作者更详细的打包教程:
上面三种方式都可以完成air应用程序的部署,推荐使用Web部署和本地部署,包含air运行时环境部署也建议一并发布,如果每一种方式不可用,可以尝试其他的安装方法。尽量让每个用户都能用上你写的air应用程序。
相关文章推荐
- 如何打包和部署air应用程序
- 如何打包和部署air应用程序
- 如何打包部署WinForm 应用程序
- .NET框架程序设计--生成,打包,部署及管理应用程序与类型(2:Assembly的生成以及版本信息)
- 软件应用程序的打包和部署
- springboot如何测试打包部署
- air打包后,提示无法安装此应用程序,因为为正确配置此安装程序
- LayaAir引擎学习日志12----LayaAir 如何打包成app
- 如何在项目部署的时候自动安装多个应用程序安装包(VC++6.0)
- CLR via C# 3 读书笔记(15):第2章 生成、打包、部署和管理应用程序与类型 — 2.6 语言文化 & 2.7 简单应用程序部署
- 打包部署时出错 已预编译此应用程序
- .Net应用程序打包部署总结
- 如何真正解决“ UWP DEP0700: 应用程序注册失败。[0x80073CF9] 另一个用户已安装此应用的未打包版本。当前用户无法将该...”的问题
- [引]ASP.NET 移动网页 与 如何:使用仿真程序和浏览器在部署移动 Web 应用程序之前对其进行测试
- 《CLR via C#》读书笔记 之 生成、打包、部署和管理应用程序及类型
- 如何打包war,PLSQL Developer,svn,部署Tomcat
- 软件应用程序的打包和部署
- Android Proguard安全加固教你如何让自己的应用程序或SDK更难被反编译--library打包成jar并且混淆
- 二:【nopcommerce系列】Nop的文件结构,引用关系。如何编译打包部署等
- 如何在项目部署的时候自动安装多个应用程序安装包(VC++6.0)