如何打包和部署air应用程序
來源:http://www.solosky.net/2010/12/package-and-deploy-air-application.html
昨天折騰了一個晚上,終于把我寫的美女時鐘桌面?的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應用程序。
總結
以上是生活随笔為你收集整理的如何打包和部署air应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB高级操作(管道聚合)(mo
- 下一篇: Adobe AIR for html/j