(仅限 AIR)
flash.desktop
public final class Updater
继承Updater Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

Updater 类用于将当前运行的应用程序更新为不同的版本。若要使用该类,请实例化一个 Updater 对象,然后调用其 update() 方法。

另请参见

air.update.ApplicationUpdater
air.update.ApplicationUpdaterUI


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
Updater 类的构造函数。
Updater
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
  
AIR-only update(airFile:File, version:String):void
使用指定的 AIR 文件中包含的应用程序版本更新当前运行的应用程序。
Updater
 Inherited
返回指定对象的原始值。
Object
构造函数详细信息
AIR-only Updater()构造函数
public function Updater()

运行时版本: AIR 1.0

Updater 类的构造函数。请注意,update() 方法不是该类的静态成员。必须实例化一个 Updater 对象,然后对它调用 update() 方法。

方法详细信息
AIR-only update()方法
public function update(airFile:File, version:String):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

使用指定的 AIR 文件中包含的应用程序版本更新当前运行的应用程序。AIR 文件中的应用程序必须具有与当前正在运行的应用程序相同的应用程序标识符 (appID)。

调用此方法将导致当前应用程序退出(如同调用了 NativeApplication.exit() 方法)。这是必要的,因为 Adobe AIR 无法在应用程序正在运行时完全更新该应用程序。一旦成功安装了应用程序的新版本,该应用程序即会启动。如果运行时无法成功安装新版本(例如,如果新版本的应用程序 ID 与现有的版本不匹配),AIR 安装程序会向用户显示错误消息,然后重新启动旧版本。

无论更新是否成功,更新过程都会重新启动该应用程序。更新可能因为各种原因而失败,包括应用程序无法控制(比如用户没有足够的权限来安装该应用程序)等原因。应用程序应该谨慎检测失败,避免反复重新尝试相同的失败更新。所造成的无限循环必将禁用该应用程序。检查更新是否成功的方法之一是在启动更新前将当前版本号码写到一个文件中,当应用程序重新启动后将该号码与版本号码进行比较。

在使用 AIR Debug Launcher (ADL) 应用程序测试某个应用程序时,调用 update() 方法会导致 IllegalOperationError 异常。

在 Mac OS 中,若要安装某一应用程序的更新版本,用户需要具有足够的系统权限才能将新版本安装到应用程序目录中。在 Windows 或 Linux 中,用户需要具有管理权限。

如果应用程序的更新版本要求 运行时的更新版本,则应安装新的运行时版本。若要更新运行时,用户需要具有计算机的管理员权限。

注意:出于安全方面的原因,需要指定 version 参数。通过要求应用程序验证 AIR 文件中的版本号码,应用程序不会在不经意间安装较旧的版本,较旧的版本可能包含在安全性方面已经得到修复的易受攻击性。

参数

airFile:File — 指向包含应用程序更新版本的 AIR 文件的 File 对象。
 
version:String — 新 AIR 文件中所需要的版本。若要使更新成功,AIR 文件的应用程序描述符文件的主 application 元素的 version 属性中的字符串必须与此值匹配。


引发
IllegalOperationError — 在 ADL 中运行时调用该方法。

另请参见


示例

请注意,update() 方法不是 该类的静态方法。可以实例化一个 Updater 对象并调用该对象的 update() 方法。
import flash.fileSystem.File;
import flash.desktop.Updater;
 
var updater:Updater = new Updater();
var airFile:File = File.applicationStore.resolvePath("Example Application.air");
var version:String = "2.01";
updater.update(airFile, version);