AIR自动更新工具类
package com.{
import flash.events.ErrorEvent;
import flash.utils.getQualifiedClassName;
import mx.controls.Alert;
import air.update.ApplicationUpdaterUI;
import air.update.events.DownloadErrorEvent;
import air.update.events.StatusFileUpdateErrorEvent;
import air.update.events.StatusUpdateErrorEvent;
import air.update.events.UpdateEvent;
/**
* 概要:软件更新管理器
* 创建日期:2014-3-10
* 最后更新日期:2014-3-10
* @author
*/
public class AppUpdate
{
private const downErrorMSG:Object =
{
"16800":"验证已下载的更新文件时出错。下面内容可能包含其他信息。",
"16801":"Adobe AIR 文件无效(缺少 application.xml)。",
"16802":"Adobe AIR 文件无效(缺少 MIME 类型)。",
"16807":"Adobe AIR 文件无效(格式)。",
"16804":"Adobe AIR 文件无效(标志无效)。",
"16805":"Adobe AIR 文件无效(压缩方式未知)。",
"16806":"Adobe AIR 文件无效(文件名无效)。",
"16807":"Adobe AIR 文件无效(已损坏)。",
"16808":"配置文件不存在。",
"16809":"未设置 updateURL 属性。",
"16810":"保留。",
"16811":"配置文件无效(配置版本未知)。",
"16812":"配置文件无效(缺少 URL)。",
"16813":"配置文件无效(延迟格式)。",
"16814":"配置文件无效(defaultUI 值无效)。",
"16815":"更新描述符无效(描述符版本未知)。",
"16816":"更新描述符无效(缺少更新版本)。",
"16817":"更新描述符无效(说明无效)。",
"16818":"向磁盘保存数据时发生 I/O 错误。下面内容可能会提供更多信息。",
"16819":"下载时发生安全错误。下面内容可能会提供更多信息。",
"16820":"HTTP 状态代码无效。下面内容可能包含无效的状态代码。",
"16821":"保留。",
"16822":"下载时发生 I/O 错误。下面内容可能会提供更多信息。",
"16823":"向磁盘保存数据时文件尾出错。下面内容可能会提供更多信息。",
"16824":"更新描述符无效。下面内容可能会提供更多信息。",
"16825":"更新文件包含应用程序 ID 不同的应用程序。",
"16826":"更新文件不包含应用程序的更新版本。",
"16827":"更新文件中包含的版本与更新描述符中的版本不匹配。",
"16828":"无法更新应用程序,通常是因为应用程序正在 AIR Debug Launcher (ADL) 中运行。",
"16829":"安装时缺少更新文件。"
};
public function AppUpdate(configURL:String)
{
updateProject(configURL);
if(appUpdater.isFirstRun)
{
var vi:VersionInfo = new VersionInfo();
vi.version = appUpdater.currentVersion;
vi.open();
}
}
public static var appUpdater: ApplicationUpdaterUI = new ApplicationUpdaterUI();
private function updateProject(configURL:String) :void {
// 应用配置文件
configURL += "version.xml";
try
{
appUpdater.updateURL = configURL;
appUpdater.isCheckForUpdateVisible = false;
appUpdater.addEventListener(UpdateEvent.INITIALIZED, onUpdate);
appUpdater.addEventListener(ErrorEvent.ERROR, onError);
appUpdater.addEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, updateErrorHandler);
appUpdater.addEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, downErrorHandler);
appUpdater.addEventListener(StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR, fileUpdateErrorHandler);
appUpdater.initialize();
}
catch (error: Error)
{
Alert.show("检测更新失败", "更新失败", 4);
removeHandler();
}
}
private function removeHandler():void
{
appUpdater.removeEventListener(UpdateEvent.INITIALIZED, onUpdate);
appUpdater.removeEventListener(ErrorEvent.ERROR, onError);
appUpdater.removeEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, updateErrorHandler);
appUpdater.removeEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, downErrorHandler);
appUpdater.removeEventListener(StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR, fileUpdateErrorHandler);
}
// 自动更新
public static function updateAirFromService() :void
{
try
{
appUpdater.checkNow();
}
catch (error: Error)
{
Alert.show("下载更新失败", "onUpdate error", 4);
}
}
// 执行更新
private function onUpdate(event:UpdateEvent):void
{
updateAirFromService();
}
// 更新检查失败
private function onError(event:ErrorEvent):void
{
Alert.show("更新失败", "onError", 4);
removeHandler();
}
protected function updateErrorHandler(event:StatusUpdateErrorEvent):void
{
Alert.show("更新失败", "updateError", 4);
removeHandler();
}
protected function downErrorHandler(event:DownloadErrorEvent):void
{
var msg:String = downErrorMSG + "\n";
if(downErrorMSG)
msg += downErrorMSG;
else
msg += event.subErrorID;
msg += "\n";
msg += event.text;
Alert.show("应用下载失败","下载失败", 4);
removeHandler();
}
protected function fileUpdateErrorHandler(event:StatusFileUpdateErrorEvent):void
{
Alert.show("文件下载失败", "fileUpdateError", 4);
removeHandler();
}
}
}
AppUpdate.as
<?xml version="1.0" encoding="UTF-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/2.5">
<versionNumber>1.0.1</versionNumber>
<url>http://192.168.1.200:8080/app/gle/GraphicsLibraryEditor.air</url>
<description>这是最新版的应用程序</description>
</update>version.xml
页:
[1]