守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 935|回复: 1

[AIR技术] AIR自动更新工具类

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51757
    钢镚
    1422

    开源英雄守望者

    发表于 2015-6-10 09:51:49 | 显示全部楼层 |阅读模式
    1. package com.
    2. {  
    3.   import flash.events.ErrorEvent;
    4.   import flash.utils.getQualifiedClassName;
    5.   
    6.   import mx.controls.Alert;
    7.   
    8.   import air.update.ApplicationUpdaterUI;
    9.   import air.update.events.DownloadErrorEvent;
    10.   import air.update.events.StatusFileUpdateErrorEvent;
    11.   import air.update.events.StatusUpdateErrorEvent;
    12.   import air.update.events.UpdateEvent;
    13.   
    14.   /**
    15.    * 概要:软件更新管理器
    16.    * 创建日期:2014-3-10
    17.    * 最后更新日期:2014-3-10
    18.    * @author
    19.    */
    20.   public class AppUpdate
    21.   {
    22.    
    23.     private const downErrorMSG:Object =
    24.       {
    25.         "16800":"验证已下载的更新文件时出错。下面内容可能包含其他信息。",
    26.         "16801":"Adobe AIR 文件无效(缺少 application.xml)。",
    27.         "16802":"Adobe AIR 文件无效(缺少 MIME 类型)。",
    28.         "16807":"Adobe AIR 文件无效(格式)。",
    29.         "16804":"Adobe AIR 文件无效(标志无效)。",
    30.         "16805":"Adobe AIR 文件无效(压缩方式未知)。",
    31.         "16806":"Adobe AIR 文件无效(文件名无效)。",
    32.         "16807":"Adobe AIR 文件无效(已损坏)。",
    33.         "16808":"配置文件不存在。",
    34.         "16809":"未设置 updateURL 属性。",
    35.         "16810":"保留。",
    36.         "16811":"配置文件无效(配置版本未知)。",
    37.         "16812":"配置文件无效(缺少 URL)。",
    38.         "16813":"配置文件无效(延迟格式)。",
    39.         "16814":"配置文件无效(defaultUI 值无效)。",
    40.         "16815":"更新描述符无效(描述符版本未知)。",
    41.         "16816":"更新描述符无效(缺少更新版本)。",
    42.         "16817":"更新描述符无效(说明无效)。",
    43.         "16818":"向磁盘保存数据时发生 I/O 错误。下面内容可能会提供更多信息。",
    44.         "16819":"下载时发生安全错误。下面内容可能会提供更多信息。",
    45.         "16820":"HTTP 状态代码无效。下面内容可能包含无效的状态代码。",
    46.         "16821":"保留。",
    47.         "16822":"下载时发生 I/O 错误。下面内容可能会提供更多信息。",
    48.         "16823":"向磁盘保存数据时文件尾出错。下面内容可能会提供更多信息。",
    49.         "16824":"更新描述符无效。下面内容可能会提供更多信息。",
    50.         "16825":"更新文件包含应用程序 ID 不同的应用程序。",
    51.         "16826":"更新文件不包含应用程序的更新版本。",
    52.         "16827":"更新文件中包含的版本与更新描述符中的版本不匹配。",
    53.         "16828":"无法更新应用程序,通常是因为应用程序正在 AIR Debug Launcher (ADL) 中运行。",
    54.         "16829":"安装时缺少更新文件。"
    55.       };
    56.    
    57.     public function AppUpdate(configURL:String)
    58.     {
    59.       updateProject(configURL);
    60.       if(appUpdater.isFirstRun)
    61.       {
    62.         var vi:VersionInfo = new VersionInfo();
    63.         vi.version = appUpdater.currentVersion;
    64.         vi.open();
    65.       }
    66.     }
    67.    
    68.     [Bindable]
    69.     public static var appUpdater: ApplicationUpdaterUI = new ApplicationUpdaterUI();
    70.    
    71.     private function updateProject(configURL:String) :void {
    72.       // 应用配置文件
    73.       
    74.       configURL += "version.xml";
    75.       
    76.       try
    77.       {
    78.         appUpdater.updateURL = configURL;
    79.         appUpdater.isCheckForUpdateVisible = false;
    80.         appUpdater.addEventListener(UpdateEvent.INITIALIZED, onUpdate);
    81.         appUpdater.addEventListener(ErrorEvent.ERROR, onError);
    82.         appUpdater.addEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, updateErrorHandler);
    83.         appUpdater.addEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, downErrorHandler);
    84.         appUpdater.addEventListener(StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR, fileUpdateErrorHandler);
    85.         
    86.         appUpdater.initialize();
    87.       }
    88.       catch (error: Error)
    89.       {
    90.         
    91.         Alert.show("检测更新失败", "更新失败", 4);
    92.         removeHandler();
    93.         
    94.       }
    95.     }
    96.    
    97.     private function removeHandler():void
    98.     {
    99.       appUpdater.removeEventListener(UpdateEvent.INITIALIZED, onUpdate);
    100.       appUpdater.removeEventListener(ErrorEvent.ERROR, onError);
    101.       appUpdater.removeEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, updateErrorHandler);
    102.       appUpdater.removeEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, downErrorHandler);
    103.       appUpdater.removeEventListener(StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR, fileUpdateErrorHandler);
    104.     }
    105.    
    106.     // 自动更新
    107.     public static function updateAirFromService() :void
    108.     {
    109.       try
    110.       {
    111.         appUpdater.checkNow();
    112.       }
    113.       catch (error: Error)
    114.       {
    115.         Alert.show("下载更新失败", "onUpdate error", 4);      
    116.       }
    117.     }
    118.    
    119.     // 执行更新
    120.     private function onUpdate(event:UpdateEvent):void
    121.     {  
    122.       updateAirFromService();
    123.     }
    124.    
    125.     // 更新检查失败
    126.     private function onError(event:ErrorEvent):void
    127.     {  
    128.       Alert.show("更新失败", "onError", 4);
    129.       removeHandler();      
    130.     }  
    131.    
    132.     protected function updateErrorHandler(event:StatusUpdateErrorEvent):void
    133.     {
    134.       
    135.       Alert.show("更新失败", "updateError", 4);
    136.       removeHandler();
    137.       
    138.     }
    139.    
    140.     protected function downErrorHandler(event:DownloadErrorEvent):void
    141.     {
    142.       var msg:String = downErrorMSG[event.errorID+""] + "\n";
    143.       if(downErrorMSG[event.subErrorID+""])
    144.         msg += downErrorMSG[event.subErrorID+""];
    145.       else
    146.         msg += event.subErrorID;
    147.       msg += "\n";
    148.       msg += event.text;
    149.       
    150.       Alert.show("应用下载失败","下载失败", 4);
    151.       removeHandler();
    152.       
    153.     }
    154.    
    155.     protected function fileUpdateErrorHandler(event:StatusFileUpdateErrorEvent):void
    156.     {
    157.      
    158.       Alert.show("文件下载失败", "fileUpdateError", 4);
    159.       removeHandler();
    160.       
    161.     }
    162.   }
    163. }
    复制代码


    AppUpdate.as




    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51757
    钢镚
    1422

    开源英雄守望者

     楼主| 发表于 2015-6-10 11:48:21 | 显示全部楼层
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5">
    3.         <versionNumber>1.0.1</versionNumber>
    4.         <url>http://192.168.1.200:8080/app/gle/GraphicsLibraryEditor.air</url>
    5.         <description>这是最新版的应用程序</description>
    6. </update>
    复制代码
    version.xml



    守望者AIR技术交流社区(www.airmyth.com)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-10-23 20:31 , Processed in 0.044534 second(s), 32 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表