对 AIR 应用程序的更新版本进行签名

您在每次创建现有 AIR 应用程序的更新版本时,可以对更新的应用程序进行签名。最好的做法是,您可以使用签名前一版本所用的同一证书来对更新的版本进行签名。这样签名将与应用程序的首次签名完全相同。

如果用于签名应用程序前一版本的证书已经过期,并且已经续订或更换,则您可以使用续订证书或新证书对更新版本进行签名。做法是,您使用新证书对应用程序进行签名,并且使用原始证书应用迁移签名。迁移签名会验证原始证书所有者是否已发布更新。

在应用迁移签名前,请考虑以下事项:

  • 若要应用迁移签名,原始证书必须仍然有效或者是在过去的 365 天内过期的。此期间称为“宽限期”,未来有可能变更该期间持续时间。

    注: AIR 2.6 及之前版本,宽限期为 180 天。
  • 您不能在证书过期、并且已经超过 365 天宽限期后应用迁移签名。这时,用户必须先卸载现有版本,才能安装更新版本。

  • 365 天宽限期仅适用于在应用程序描述符命名空间中指定 AIR 1.5.3 版或更高版本的应用程序。

重要说明: 利用过期证书中的迁移签名对更新进行签名是一个临时解决方案。若要创建一个全面解决方案,请创建一个标准化的签名工作流程来管理应用程序更新的部署。例如,使用最新的证书对每次更新进行签名,并且使用用于签名前一更新的证书(如果适用)来应用迁移证书。将每次更新上载到它自己的 URL,从这里用户可以下载应用程序。有关详细信息,请参阅对应用程序更新进行签名的工作流程

下表和下图总结了迁移签名的工作流程:

应用场景

原始证书的状态

开发人员操作

用户操作

基于 Adobe AIR 运行时版本 1.5.3 或更高版本的应用程序

有效

发布 AIR 应用程序的最新版本

无需任何操作

应用程序会自动升级

已过期,但在 365 天宽限期内

使用新证书对应用程序进行签名。使用过期证书应用迁移签名。

无需任何操作

应用程序会自动升级

已过期并且超出宽限期

您不能将迁移签名应用于 AIR 应用程序更新。

而是必须使用新证书发布 AIR 应用程序的另一个版本。在卸载 AIR 应用程序的现有版本后,用户可以安装该程序的新版本。

卸载 AIR 应用程序的当前版本,然后安装最新版本

  • 基于 Adobe AIR 运行时版本 1.5.2 或更低版本的应用程序

  • 更新的应用程序描述符中的发行商 ID 与前一版本的发行商 ID 相匹配

有效

发布 AIR 应用程序的最新版本

无需任何操作

应用程序会自动升级

已过期并且超出宽限期

您不能将迁移签名应用于 AIR 应用程序更新。

而是必须使用新证书发布 AIR 应用程序的另一个版本。在卸载 AIR 应用程序的现有版本后,用户可以安装该程序的新版本。

卸载 AIR 应用程序的当前版本,然后安装最新版本

  • 基于 Adobe AIR 运行时版本 1.5.2 或更低版本的应用程序

  • 更新版本的应用程序描述符中的发行商 ID 与前一版本的发行商 ID 匹配

任意

使用有效证书对 AIR 应用程序进行签名并发布 AIR 应用程序的最新版本

卸载 AIR 应用程序的当前版本,然后安装最新版本

适用于更新的签名工作流程

迁移 AIR 应用程序以便使用新的证书

要在更新 AIR 应用程序时将其迁移到新的证书:

  1. 创建应用程序更新

  2. 将 AIR 更新文件打包并使用证书对它进行签名

  3. 使用原始证书和 -migrate 命令再次对 AIR 文件签名

除用于更新曾使用旧证书进行签名的任何以前版本的应用程序之外,使用 -migrate 命令签名的 AIR 文件还可以用于安装新版本的应用程序。

注: 更新为早于 AIR 1.5.3 的版本发布的应用程序时,请在应用程序描述符中指定原始发布者 ID。否则,应用程序的用户必须先卸载早期版本才能安装更新版本。

采用以下语法使用 ADT -migrate 命令:

adt -migrate SIGNING_OPTIONS air_file_in air_file_out
  • SIGNING_OPTIONS 该签名选项标识用于对 AIR 文件签名的私钥和证书。这些选项必须标识原始签名证书,ADT 代码签名选项中介绍了这些选项。

  • air_file_in 使用证书签名的要更新的 AIR 文件。

  • air_file_out 要创建的 AIR 文件。

注: 用于输入和输出 AIR 文件的文件名必须是不同的。

下例演示的是通过调用带有 -migrate 标志的 ADT 对 AIR 应用程序的更新版本应用迁移签名:

adt -migrate -storetype pkcs12 -keystore cert.p12 myAppIn.air myApp.air
注: 在 AIR 1.1 发行版中,已将 -migrate 命令添加到 ADT。

迁移本机 AIR 安装应用程序以便使用新的证书

对于作为本机安装程序发布的 AIR 应用程序(例如,使用本机扩展 API 的应用程序),由于它是特定于平台的本机应用程序,而不是 .air 文件,因此无法使用 ADT -migrate 命令对其进行签名。替代方法是将作为本机扩展发布的 AIR 应用程序迁移到新的证书。

  1. 创建应用程序更新。

  2. 确保在您的应用程序描述符 (app.xml) 文件中,<supportedProfiles> 标签既包括桌面配置文件也包括扩展桌面配置文件(或删除应用程序描述符中的 <supportedProfiles> 标签)。

  3. 使用带有证书的 ADT -package 命令将更新应用程序作为 .air 文件进行打包并签名。

  4. 使用带有原始证书的 ADT -migrate 命令将迁移证书应用到 .air 文件(如之前的迁移 AIR 应用程序以便使用新的证书中所述)。

  5. 使用带有 -target native 标志的 ADT -package 命令将 .air 文件打包成本机安装程序。由于已经对应用程序进行过签名,因此在这步中不用指定签名证书。

下例演示此过程的第 3-5 步。代码调用带有 -package 命令的 ADT,调用带有 -migrate 命令的 ADT,然后再次调用带有 -package 命令的 ADT,以实现将 AIR 应用程序的更新版本作为本机安装程序进行打包:

adt -package -storetype pkcs12 -keystore new_cert.p12 myAppUpdated.air myApp.xml myApp.swf 
adt -migrate -storetype pkcs12 -keystore original_cert.p12 myAppUpdated.air myAppMigrate.air 
adt -package -target native myApp.exe myAppMigrate.air

迁移使用本机扩展的 AIR 应用程序以便使用新的证书

对于使用本机扩展的 AIR 应用程序,无法使用 ADT -migrate 命令对其进行签名。也无法使用本机 AIR 安装应用程序的迁移过程对其实现迁移,原因是不能将其作为 .air 文件来发布。替代方法是将使用本机扩展的 AIR 应用程序迁移到新的证书。

  1. 创建应用程序更新

  2. 使用 ADT -package 命令对更新的本机安装程序进行打包并签名。使用证书打包应用程序,并包括 -migrate 标志以指定原始证书。

使用以下语法来调用带有 -migrate 标志的 ADT -package 命令:

adt -package AIR_SIGNING_OPTIONS -migrate MIGRATION_SIGNING_OPTIONS -target package_type NATIVE_SIGNING_OPTIONS output app_descriptor FILE_OPTIONS
  • AIR_SIGNING_OPTIONS 这些签名选项标识签名 AIR 文件所使用的私钥和证书。这些选项标识签名证书,ADT 代码签名选项中对它们进行了说明。

  • MIGRATION_SIGNING_OPTIONS 这些签名选项标识签名 AIR 文件所使用的私钥和证书。这些选项标识原始签名证书,ADT 代码签名选项中对它们进行了说明。

  • 其他选项与打包本机 AIR 安装应用程序所用的选项相同,ADT package 命令中对它们进行了说明。

下例演示的是通过调用带有 -package 命令和 -migrate 标志的 ADT 对使用本机扩展的 AIR 应用程序的更新版本进行打包并对更新应用迁移:

adt -package -storetype pkcs12 -keystore new_cert.p12 -migrate -storetype pkcs12 -keystore original_cert.p12 -target native myApp.exe myApp.xml myApp.swf
注: -package 命令的 -migrate 标志可用在 AIR 3.6 和更高版本的 ADT 中。