封裝桌上型 AIR 安裝檔案

每一個 AIR 應用程式至少都要有一個應用程式描述器檔案和主要 SWF 或 HTML 檔。隨應用程式安裝的其他任何資源也必須封裝在 AIR 檔案中。

此文章討論使用 SDK 包含的命令列工具來封裝 AIR 應用程式。如需使用 Adobe 編寫工具之一來封裝應用程式的詳細資訊,請參閱下列項目:

所有 AIR 安裝程式檔案都必須使用數位憑證來加以簽署。AIR 安裝程式會使用這項簽名,確認應用程式檔案在您簽署之後並未遭到修改。您可以使用憑證授權單位提供的程式碼簽署憑證,或使用自我簽署的憑證。

使用由受信任憑證授權單位發行的憑證時,應用程式的使用者便可以確認您的發行者身分。安裝對話方塊會反映出您的身分已由憑證授權單位驗證。

已由受信任憑證簽署的應用程式安裝確認對話方塊

當您使用自我簽署的憑證時,使用者便無法驗證您的簽署者身分。自我簽署憑證也無法完全保證套件未遭到竄改 (這是因為在合法安裝檔案送達使用者之前,該安裝檔案可能已被偽造的檔案所取代)。而安裝對話方塊會反映出無法驗證發行者的身分。當使用者在安裝您的應用程式時,便會承擔非常高的安全性風險:

檢視完整大小的圖形
已由自我簽署憑證簽署的應用程式安裝確認對話方塊

您可以使用 ADT 的 -package 命令,以單一步驟完成 AIR 檔的封裝及簽署。您也可以使用 -prepare 命令建立未經簽署的中繼套件,然後再另外使用 -sign 命令簽署此中繼套件。

備註: Java 1.5 版及以上版本在用來保護 PKCS12 憑證檔案的密碼中,不接受高位元 ASCII 字元。當您建立或匯出程式碼簽署憑證檔案時,請只在密碼中使用一般的 ASCII 字元。

簽署安裝套件時,ADT 會自動聯繫時間戳記授權伺服器以驗證時間。此時間戳記資訊會包含在 AIR 檔中。之後,您隨時可以安裝包含經過驗證之時間戳記的 AIR 檔。如果 ADT 無法連接至時間戳記伺服器,封裝作業就會取消。您可以覆寫時間戳記選項,但是如果沒有時間戳記,在用於簽署安裝檔案的憑證過期之後,就無法再安裝 AIR 應用程式。

如果您要建立套件來更新現有的 AIR 應用程式,就必須利用和原始應用程式相同的憑證來簽署該套件。如果原始憑證已被更新或在過去 180 天內過期,或如果您想要變更為新的憑證,則您可以套用移轉簽名。移轉簽名會同時使用新的與舊的憑證來簽署應用程式 AIR 檔案。使用 -migrate 命令,如 ADT migrate 命令 所述套用移轉簽名。

重要事項: 在原始憑證過期之後,您可以在 180 天寬限期內套用移轉簽名。若不使用移轉簽名,現有使用者就必須先解除安裝現有的應用程式,然後才能安裝您的新版本。寬限期只適用於在應用程式描述器命名空間中,指定 AIR 1.5.3 版或更新版本的應用程式。若指定的是較早版本的 AIR 執行階段,則無寬限期。

AIR 1.1 之前的版本並不支援移轉簽名。您必須利用 SDK 1.1 版或更新版本封裝應用程式,才能套用移轉簽名。

使用 AIR 檔案部署的應用程式也稱為桌上型描述檔應用程式。如果應用程式描述器檔案不支援桌上型描述檔,您將無法使用 ADT 來封裝 AIR 應用程式的原生安裝程式。您可以在應用程式描述器檔案中使用 supportedProfiles 元素來限制此描述檔。請參閱 裝置描述檔 supportedProfiles

備註: 應用程式描述器檔案中的設定會判斷 AIR 應用程式的識別及預設安裝路徑。請參閱 AIR 應用程式描述器檔案

發行者 ID

AIR 1.5.3 已不再使用發行者 ID。新的應用程式 (利用 AIR 1.5.3 或更新版本所發行) 不需要亦不應該指定發行者 ID。

當您更新以較早版本 AIR 發行的應用程式時,必須在應用程式描述器檔案中指定原始發行者 ID。否則,應用程式的安裝版本與更新版本會被視為是不同的應用程式。如果您使用不同的 ID 或省略 publisherID 標籤,那麼使用者就必須先解除安裝之前的版本,然後才能安裝新版的應用程式。

若要判斷原始發行者 ID,請到原始應用程式安裝處的 META-INF/AIR 子目錄中找出 publisherid 檔案。 這個檔案中的字串就是發行者 ID。應用程式描述器必須在應用程式描述器的命名空間宣告中指定 AIR 1.5.3 執行階段 (或更新版本),以便手動指定發行者 ID。

對於在 AIR 1.5.3 之前所發佈的應用程式 (或在應用程式描述器命名空間中指定較早版本的 AIR,但實際上卻使用 AIR 1.5.3 SDK 來發佈),其發行者 ID 是根據簽署憑證所計算出來的。此 ID 將與應用程式 ID 搭配,以產生應用程式的識別。發行者 ID (如果有的話) 可用於以下用途:

  • 驗證 AIR 檔案是更新版本,而不是要安裝的新應用程式

  • 加密本機儲存區加密金鑰的一部分

  • 應用程式儲存目錄路徑的一部分

  • 本機連線之連線字串的一部分

  • 識別字串的一部分,AIR 內部瀏覽器 API 用來呼叫應用程式

  • OSID 的一部分 (建立自訂安裝/解除安裝程式時使用)

在 AIR 1.5.3 之前,如果您使用新的或更新的憑證,利用移轉簽名來簽署應用程式更新,那麼應用程式的發行者 ID 便可能會變更。當發行者 ID 變更時,所有與此 ID 相關的 AIR 功能也會隨之變更行為。例如,現有加密本機儲存區中的資料將無法存取,而且任何建立該應用程式本機連線的 Flash 或 AIR 實體,都必須在連線字串中使用新的 ID。

在 AIR 1.5.3 或以上版本中,發行者 ID 並非以簽署憑證為基礎,只有當應用程式描述器中含有 publisherID 標籤時,才會指定發行者 ID。如果在更新 AIR 套件中指定的發行者 ID 不符合目前的發行者 ID,將無法更新應用程式。

使用 ADT 封裝

您可以使用 AIR ADT 命令列工具來封裝 AIR 應用程式。封裝之前,必須編譯所有的 ActionScript、MXML 與任何擴充程式碼。您也必須具有程式碼簽署憑證。

如需 ADT 命令與選項的詳細參考資訊,請參閱 AIR Developer Tool (ADT)

建立 AIR 套件

若要建立 AIR 套件,請使用 ADT package 命令,將發行組建的目標類型設為 air

adt -package -target air -storetype pkcs12 -keystore ../codesign.p12 myApp.air myApp-app.xml myApp.swf icons

此範例假設 ADT 工具的路徑位於命令列殼層路徑定義中。(如需說明,請參閱 Path 環境變數 )。

您必須從包含應用程式檔案的目錄中執行命令。範例中的應用程式檔案為 myApp-app.xml (應用程式描述器檔案)、myApp.swf 與圖示目錄。

如圖所示執行命令時,ADT 將提示您輸入金鑰儲存密碼。(您輸入的密碼字元不會永遠顯示;完成輸入時請按 Enter)。

從 AIRI 檔案建立 AIR 套件

您可以建立簽署 AIRI 檔案,以建立可安裝的 AIR 套件:

adt -sign -storetype pkcs12 -keystore ../codesign.p12 myApp.airi myApp.air