您在每次创建现有 AIR 应用程序的更新版本时,可以对更新的应用程序进行签名。最好的做法是,您可以使用签名前一版本所用的同一证书来对更新的版本进行签名。这样签名将与应用程序的首次签名完全相同。
如果用于签名应用程序前一版本的证书已经过期,并且已经续订或更换,则您可以使用续订证书或新证书对更新版本进行签名。做法是,您使用新证书对应用程序进行签名,
并且
使用原始证书应用迁移签名。迁移签名会验证原始证书所有者是否已发布更新。
在应用迁移签名前,请考虑以下事项:
-
若要应用迁移签名,原始证书必须仍然有效或者是在过去的 365 天内过期的。此期间称为“宽限期”,未来有可能变更该期间持续时间。
注:
AIR 2.6 及之前版本,宽限期为 180 天。
-
您不能在证书过期、并且已经超过 365 天宽限期后应用迁移签名。这时,用户必须先卸载现有版本,才能安装更新版本。
-
365 天宽限期仅适用于在应用程序描述符命名空间中指定 AIR 1.5.3 版或更高版本的应用程序。
重要说明:
利用过期证书中的迁移签名对更新进行签名是一个临时解决方案。若要创建一个全面解决方案,请创建一个标准化的签名工作流程来管理应用程序更新的部署。例如,使用最新的证书对每次更新进行签名,并且使用用于签名前一更新的证书(如果适用)来应用迁移证书。将每次更新上载到它自己的 URL,从这里用户可以下载应用程序。有关详细信息,请参阅
对应用程序更新进行签名的工作流程
。
下表和下图总结了迁移签名的工作流程:
应用场景
|
原始证书的状态
|
开发人员操作
|
用户操作
|
基于 Adobe AIR 运行时版本 1.5.3 或更高版本的应用程序
|
有效
|
发布 AIR 应用程序的最新版本
|
无需任何操作
应用程序会自动升级
|
已过期,但在 365 天宽限期内
|
使用新证书对应用程序进行签名。使用过期证书应用迁移签名。
|
无需任何操作
应用程序会自动升级
|
已过期并且超出宽限期
|
您不能将迁移签名应用于 AIR 应用程序更新。
而是必须使用新证书发布 AIR 应用程序的另一个版本。在卸载 AIR 应用程序的现有版本后,用户可以安装该程序的新版本。
|
卸载 AIR 应用程序的当前版本,然后安装最新版本
|
|
有效
|
发布 AIR 应用程序的最新版本
|
无需任何操作
应用程序会自动升级
|
已过期并且超出宽限期
|
您不能将迁移签名应用于 AIR 应用程序更新。
而是必须使用新证书发布 AIR 应用程序的另一个版本。在卸载 AIR 应用程序的现有版本后,用户可以安装该程序的新版本。
|
卸载 AIR 应用程序的当前版本,然后安装最新版本
|
|
任意
|
使用有效证书对 AIR 应用程序进行签名并发布 AIR 应用程序的最新版本
|
卸载 AIR 应用程序的当前版本,然后安装最新版本
|
适用于更新的签名工作流程
迁移 AIR 应用程序以便使用新的证书
要在更新 AIR 应用程序时将其迁移到新的证书:
-
创建应用程序更新
-
将 AIR 更新文件打包并使用
新
证书对它进行签名
-
使用
原始
证书和
-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 应用程序迁移到新的证书。
-
创建应用程序更新。
-
确保在您的应用程序描述符 (app.xml) 文件中,
<supportedProfiles>
标签既包括桌面配置文件也包括扩展桌面配置文件(或删除应用程序描述符中的
<supportedProfiles>
标签)。
-
使用带有
新
证书的 ADT
-package
命令
将更新应用程序作为 .air 文件
进行打包并签名。
-
使用带有
原始
证书的 ADT
-migrate
命令将迁移证书应用到 .air 文件(如之前的
迁移 AIR 应用程序以便使用新的证书
中所述)。
-
使用带有
-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 应用程序迁移到新的证书。
-
创建应用程序更新
-
使用 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 中。
|
|
|