如何打包和部署air应用程序
來源:http://www.solosky.net/2010/12/package-and-deploy-air-application.html
昨天折騰了一個(gè)晚上,終于把我寫的美女時(shí)鐘桌面?的air應(yīng)用程序給發(fā)布出去了,在發(fā)布的過程中還出現(xiàn)了點(diǎn)問題(下文有說明),不過總算解決了累死我了。 Air應(yīng)用程序的部署和發(fā)布不是一般的麻煩,想來很多和我一樣的Air初學(xué)開發(fā)者在部署Air應(yīng)用程序可能都不知道怎么做,于是我寫了這篇文章,希望能對你有所幫助。 如果你想發(fā)布一個(gè)Air程序,需要兩個(gè)步驟,打包和部署。下面對這兩個(gè)步驟都做詳細(xì)的說明。本文以上次發(fā)布的?美女時(shí)鐘桌面?作為示例。
一、打包Air應(yīng)用程序
步驟1. 生成簽名文件(數(shù)字證書, CA)
Air的應(yīng)用程序簽名(CA)是強(qiáng)制,不簽名無法打包應(yīng)用程序,簽名基于RSA不對稱加密,生成一對公鑰和私鑰,使用私鑰加密應(yīng)用程序,同時(shí)公布把公鑰打包到應(yīng)用程序中,可以防止其他用戶修改發(fā)布的Air應(yīng)用程序然后再發(fā)布。 一般來說,獲得簽名文件的方法有兩種:
- 1) 可以向安全的證書管理機(jī)構(gòu)如VeriSign或Thawte獲取證書,這種證書是安全的,并且Air安裝程序可以自動聯(lián)網(wǎng)獲取證書信息,如簽名者,頒發(fā)機(jī)構(gòu),有效期等。如果聯(lián)網(wǎng)能查到當(dāng)前Air安裝程序的信息,表明這個(gè)程序是未被修改的,原始程序。當(dāng)然這個(gè)需要交納一定的費(fèi)用,如果你是開發(fā)一個(gè)完整的應(yīng)用程序,并且能保證隨時(shí)更新,還是建議你使用這種方式獲取簽名文件。
- 2) 使用 ADT 創(chuàng)建自簽名證書,您可以生成有效的 AIR 安裝文件,但由于無法驗(yàn)證自簽名證書的可靠性,因此該證書只能向用戶提供有限的安全保證。當(dāng)安裝自簽名 AIR 文件時(shí),發(fā)行商信息將對用戶顯示為“未知”。ADT 生成的證書有效期為五年。如果只是測試Air應(yīng)用程序,推薦這種方式。
這里采用第二種方式發(fā)布,簡單,免費(fèi),方便。 首先請確保 命令 AdobeAIRSDK/bin/adt.bat (linux下為adt)在環(huán)境變量中,然后執(zhí)行以下命令:
展開源代碼查看源代碼 打印關(guān)于 1.adt -certificate -cn solosky -o solosky.net 1024-RSA SigningCert.p12 god!1#$參數(shù)說明如下:
- -certificate 當(dāng)前命令為生成簽名文件
- -cn solosky 分配的作為新證書公共名稱,必須。這里是solosky
- -o solosky.net 被分配作為證書頒發(fā)組織名字??蛇x。這里是solosky.net
- 1024-RSA 用于證書的密鑰類型,即“1024-RSA”或“2048-RSA”,必須,這里是1024-RSA
- SigningCert.p12 保存證書的文件名字,必須,這里是SigningCert.p12
- god!1#$ 簽名私鑰,以后簽名程序的時(shí)候需要輸入這個(gè)密碼,必須,這里是god!1#$
執(zhí)行完畢后會在當(dāng)前目錄生成一個(gè)SigningCert.p12的簽名文件,請妥善保管好這個(gè)文件,以后更新程序的時(shí)候需要使用相同的簽名文件簽名程序,否則無法完成更新操作; 更多關(guān)于adt簽名的信息請參考這里?和?對 AIR 應(yīng)用程序進(jìn)行簽名
步驟2. 打包Air應(yīng)用程序
生成簽名文件之后,接下來就可以直接打包為.air的安裝文件了。 首先用cd命令進(jìn)入air應(yīng)用程序目錄,然后執(zhí)行以下命令
展開源代碼查看源代碼 打印關(guān)于 1.adt -package? -storetype pkcs12 -keystore ../shells/SigningCert.p12 -keypass god!1#$ girlclock-1.0.air girlclock-air.xml .參數(shù)說明如下:
- -package 當(dāng)前命令為打包air應(yīng)用程序
- -storetype pkcs12 簽名密鑰類型,保持不變
- -keystore ../shells/SigningCert.p12 簽名文件地址,切記一定不要放在應(yīng)用程序目錄下,否則簽名文件也會打包到應(yīng)用程序。。。
- -keypass god!1#$ 簽名文件的私鑰,創(chuàng)建簽名文件的時(shí)候輸入的密碼,運(yùn)行之后仍需輸入一次
- girlclock-1.0.air 輸出的air發(fā)布程序名,一般都以air為后綴
- girlclock-air.xml 應(yīng)用程序的描述文件
- . 打包的目錄,.表明是當(dāng)前目錄,切記別忘記最后面的一點(diǎn)
命令執(zhí)行完畢,在當(dāng)前目錄會生成girlclock-1.0.air的air部署文件,整個(gè)打包過程完成; 更多關(guān)于adt打包信息請參考?使用 AIR Developer Tool (ADT) 打包 AIR 安裝文件
如何生成exe可執(zhí)行程序
你還可以指定target native參數(shù),生成本地的可執(zhí)行文件(window下為exe,linux為deb或者rpm,MacOS為dmg),但這就喪失的air的跨平臺性。 如下命令將會生成girlclock-1.0.exe文件:
展開源代碼查看源代碼 打印關(guān)于 1.adt -package? -storetype pkcs12 -keystore ../shells/soloskyAirSign.p12 -keypass god!1#$? -target native girlclock-1.0.exe girlclock-air.xml .如果生成本地可執(zhí)行文件,請注意以下幾點(diǎn):
- 1. 這種發(fā)布文件無法通過下面的網(wǎng)頁部署方式部署;
- 2. 可以直接把可執(zhí)行文件發(fā)布出去,用戶下載可執(zhí)行文件,第一次運(yùn)行時(shí)會自動檢測Air運(yùn)行時(shí)環(huán)境,如果沒有會自動下載安裝,滿足安裝條件后會自動安裝到系統(tǒng)中,并在開始菜單中創(chuàng)建快捷方式,系統(tǒng)程序卸載工具中創(chuàng)建卸載方式;
- 3. 如果你的應(yīng)用程序需要支持NativeProcess(即supportedProfiles配置為extendedDesktop),則必須采用這種方式打包和部署,我在這里糾結(jié)了很久;
- 4. 無法支持Air的Update框架,但有開源的解決方案(請google之);
二、部署應(yīng)用程序
因?yàn)锳ir應(yīng)用程序運(yùn)行需要Air運(yùn)行時(shí)環(huán)境,所以部署起來有點(diǎn)復(fù)雜,這里提出了三種部署方式,建議在發(fā)布air應(yīng)用程序的時(shí)候,這三種方式都采用,盡量讓所有的用戶都能順利的安裝上air應(yīng)用程序;
1. Web部署
這種方式只適合打包類型為.air類型的應(yīng)用程序的部署。 直接把.air的文件提供給用戶下載是不行的,因?yàn)锳ir應(yīng)用程序運(yùn)行需要Air運(yùn)行時(shí)環(huán)境,所以假如用戶沒有安裝air運(yùn)行時(shí)環(huán)境,就無法運(yùn)行.air的應(yīng)用程序。好在air官方發(fā)布了一個(gè)統(tǒng)一的安裝包,可以在網(wǎng)頁上直接安裝air應(yīng)用程序,并且會自動檢測用戶是否安裝air運(yùn)行時(shí)環(huán)境,如果沒有會自動下載安裝,提供了無縫的安裝體驗(yàn),非常的方便,只不過部署起來比較麻煩:
- 1. 先從官方網(wǎng)站下載?air安裝包文件(Adobe AIR Badge Installer),并解壓;
- 2. 建立web目錄,把生成的.air應(yīng)用程序文件(girlclock-1.0.air),以及解壓之后的安裝包文件里面的AIRInstallBadge.swf,swfobject.js,expressinstall.swf四個(gè)文件復(fù)制到web目錄下;
- 3. 為你的應(yīng)用程序截圖,調(diào)整大小為205×170像素,重命名為snap.png也復(fù)制到web目錄中;
- 4. 新建一個(gè)文件deploy.html,復(fù)制下面的內(nèi)容到這個(gè)文件里,然后修改部分參數(shù),保存(當(dāng)然你也可以復(fù)制到你的發(fā)布頁中,注意一定要包含swfobject.js腳本); 展開源代碼查看源代碼 打印關(guān)于 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>美女時(shí)鐘桌面 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.// 下面的參數(shù)在網(wǎng)頁安裝air應(yīng)用程序的是必須的 21.so.addVariable("airversion", "2.5"); // 修改為運(yùn)行你的air應(yīng)用程序需要的最低運(yùn)行時(shí)環(huán)境版本 22.so.addVariable("appname", "GirlClock"); // 修改為應(yīng)用程序名,將會在安裝界面上顯示給用,僅支持英文.... 23.so.addVariable("appurl", "http://labs.solosky.net/air/girlclock/girlclock-1.0.air"); //你的.air打包文件的絕對地址,必須以http或者h(yuǎn)ttps開頭 24.? 25.// 下面的參數(shù)在網(wǎng)頁啟動air應(yīng)用程序是必須的,但安裝時(shí)是可選的, 26.so.addVariable("appid", "net.solosky.girlclock"); // 應(yīng)用程序Id,命名方式類型于java的包命名方式(ex. com.gskinner.air.MyApplication) 27.so.addVariable("pubid", ""); // publisher id 28.? 29.// 這個(gè)參數(shù)是可以為airy應(yīng)用提供在線升級支持 30.so.addVariable("appversion", "1.0"); //你的應(yīng)用程序版本 31.? 32.// 下面的參數(shù)是可選的 33.so.addVariable("image", "snap.png"); // 應(yīng)用程序截圖(205x170像素),推薦設(shè)置 34.? 35.//下面的參數(shù)請根據(jù)自己需要修改 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.//更多參數(shù)請參見?http://www.adobe.com/devnet/air/articles/badge_for_air.html 48.// ]]> 49.</script> 50.</body> 51.</html>
現(xiàn)在整個(gè)目錄的內(nèi)容如下圖:
- 5. 將web目錄下面的所有文件上傳到你的網(wǎng)站服務(wù)器上,然后輸入deploy.html查看是否出現(xiàn)安裝提示。如下圖:
更多關(guān)于air無縫安裝包(Adobe AIR Badge Installer)請參考?Getting started with the custom install badge
2. 本地程序部署
使用上面的打包方法打包為本地應(yīng)用程序,如indow下為exe,linux為deb或者rpm,MacOS為dmg,可以直接雙擊執(zhí)行,但不包含air運(yùn)行時(shí)環(huán)境,當(dāng)用戶運(yùn)行應(yīng)用程序的時(shí)候會自動自動檢測系統(tǒng)是否已經(jīng)安裝air運(yùn)行時(shí)環(huán)境,如果沒有會自動下載并安裝。 這種類型的發(fā)布程序部署比較簡單,直接發(fā)布出去即可,
3. 包含air運(yùn)行時(shí)環(huán)境部署
這種方式可以直接把a(bǔ)ir運(yùn)行時(shí)環(huán)境和air應(yīng)用程序打包在一起,而不用考慮用戶是否已經(jīng)安裝了air運(yùn)行時(shí)環(huán)境。但由于包含了air運(yùn)行時(shí)環(huán)境,所以有點(diǎn)大,大概20M左右的大小,對于無法聯(lián)網(wǎng)或者自動安裝失敗的用戶可以嘗試使用這種方式發(fā)布。 網(wǎng)上的方案比較多,這里還是推薦?夢宇工作室?編寫的?AirLauncher?來打包air應(yīng)用程序。 遺憾的是僅支持windows。原理很簡單,就是啟動進(jìn)程調(diào)用adl命令啟動程序,但沒有命令行窗口。
- 1. 首先建立pack目錄,然后把應(yīng)用程序的所有文件都復(fù)制到pack目錄中;
- 2. 在pack目錄中建立AdobeAIRSDK目錄,并把AIRSDK目錄下面的bin和runtimes復(fù)制到pack/AdobeAIRSDK下;
- 3. 復(fù)制AirLauncher.exe到pack目錄下,并修改應(yīng)用程序描述符為application.xml;雙擊運(yùn)行AirLauncher.exe看能否啟動air程序,如果能,工作完成了大部分href=”http://flexlessons.googlecode.com/files/ResHacker%203.5.zip”>ResHack修改;整個(gè)文件目錄結(jié)構(gòu)如下圖:
- 4. 你可以重命名AirLauncher.exe為你的應(yīng)用名稱,如girlclock.exe,程序圖標(biāo)可以使用
- 5. 打包pack目錄下的所有文件為.zip文件,并發(fā)布這個(gè)壓縮文件到網(wǎng)頁上即可。
你可以在這里查看AirLauncher的作者更詳細(xì)的打包教程:用WinRAR制作脫離AIR運(yùn)行時(shí)的AIR程序安裝包
上面三種方式都可以完成air應(yīng)用程序的部署,推薦使用Web部署和本地部署,包含air運(yùn)行時(shí)環(huán)境部署也建議一并發(fā)布,如果每一種方式不可用,可以嘗試其他的安裝方法。盡量讓每個(gè)用戶都能用上你寫的air應(yīng)用程序。
總結(jié)
以上是生活随笔為你收集整理的如何打包和部署air应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB高级操作(管道聚合)(mo
- 下一篇: Adobe AIR for html/j