Updater
类(在 flash.desktop 包中)包含一个
update()
方法,您可以使用它更新当前运行的具有不同版本的应用程序。例如,如果用户桌面上有某个版本的 AIR 文件(“Sample_App_v2.air”),则可以使用以下代码更新该应用程序。
ActionScript 示例:
var updater:Updater = new Updater();
var airFile:File = File.desktopDirectory.resolvePath("Sample_App_v2.air");
var version:String = "2.01";
updater.update(airFile, version);
JavaScript 示例:
var updater = new air.Updater();
var airFile = air.File.desktopDirectory.resolvePath("Sample_App_v2.air");
var version = "2.01";
updater.update(airFile, version);
在应用程序使用 Updater 类之前,用户或应用程序必须将更新版本的 AIR 文件下载到计算机。有关详细信息,请参阅
将 AIR 文件下载到用户的计算机
。
调用 Updater.update() 方法的结果
当运行时中的应用程序调用
update()
方法时,运行时将关闭此应用程序,然后尝试从 AIR 文件安装新版本。运行时将检查在 AIR 文件中指定的应用程序 ID 和发布者 ID 是否与调用
update()
方法的应用程序的应用程序 ID 和发布者 ID 相匹配。(有关应用程序 ID 和发布者 ID 的信息,请参阅
AIR 应用程序描述符文件
。)运行时还将检查版本字符串是否与传递给
update()
方法的
version
字符串相匹配。如果安装成功完成,运行时将打开新版本的应用程序。否则(如果安装无法完成),它将重新打开应用程序的现有(预安装)版本。
在 Mac OS 中,若要安装某一应用程序的更新版本,用户必须具有足够的系统权限才能将新版本安装到应用程序目录中。在 Windows 和 Linux 中,用户必须具有管理权限。
如果应用程序的更新版本要求运行时的更新版本,则会安装新的运行时版本。若要更新运行时,用户必须具有计算机的管理权限。
在使用 ADL 测试某个应用程序时,调用
update()
方法会导致运行时异常。
关于版本字符串
指定为
update()
方法的
version
参数的字符串必须与要安装的 AIR 文件的应用程序描述符文件的
version
或
versionNumber
元素中的字符串相一致。出于安全方面的考虑,需要指定
version
参数。通过要求应用程序验证 AIR 文件中的版本号,该应用程序将不会意外安装旧版本。(应用程序的旧版本可能包含已在当前安装的应用程序中修复的安全漏洞。)应用程序还应检查 AIR 文件中的版本字符串与安装的应用程序中的版本字符串是否相符,以防止降级攻击。
在 AIR 2.5 之前的版本中,版本字符串可以是任何格式。例如,可以是“2.01”也可以是“version 2”。在 AIR 2.5 或更新版本中,版本字符串必须是最多三位数字序列,这三位数字以句号 (.) 分隔。例如,“.0”、“1.0”和“67.89.999”全部都是有效的版本号。应在更新应用程序之前验证更新版本字符串。
如果 Adobe AIR 应用程序通过 Web 下载 AIR 文件,则运用一种机制使 Web 服务能够通知 AIR 应用程序正在下载的版本是一种很好的做法。然后,应用程序可以将此字符串用作
update()
方法的
version
参数。如果通过其他方式获取 AIR 文件,且 AIR 文件的版本未知,则 AIR 应用程序可以检查 AIR 文件来确定版本信息。(AIR 文件是使用 ZIP 压缩的归档文件,应用程序描述符文件是该归档文件中的第二个记录。)
有关应用程序描述符文件的详细信息,请参阅
AIR 应用程序描述符文件
。
对应用程序更新进行签名的工作流程
以临时方式发布更新会使管理多个应用程序版本的任务变得复杂,并导致跟踪证书过期日期变得非常困难。证书可能在您发布更新之前就已过期。
Adobe AIR 运行时会将所发布的不带迁移签名的应用程序更新视为新应用程序。用户在安装应用程序更新之前,必须卸载当前的 AIR 应用程序。
为了解决这一问题,请使用最新证书将更新后的每个应用程序上载到单独的部署 URL。并包含一项机制:当您的证书处于 180 天宽限期时,提醒您应用迁移签名。有关详细信息,请参阅
对 AIR 应用程序的更新版本进行签名
。
有关如何应用签名的信息,请参阅
ADT 命令
。
执行以下任务以简化应用迁移签名的过程:
|
|
|