.airファイルが.zipでダウンロードされてしまうのをphpで解決する

Adobe AIRアプリケーションを配布する場合に、.airという拡張子でパッケージングして配布します。.airファイルは中身はzipファイルで拡張子を.airにしたものです。

Adobe AIRをインストールすると .airファイルにAIR Application Installerが関連付き、.airファイルを実行すると、アプリがインストールされてなければインストールし、既にインストールされていれば置き換えるかどうか、古いバージョンが入っていればバージョンアップするかどうか、など良きにはからってくれ、起動してくれるようになります。

これによりwebには.airファイルを公開しとけばそれが自動解凍式インストーラーになるわけです。

しかし、IEでairファイルをダウンロードすると中身を勝手に判定して.zip拡張子でローカルに保存しようとするので AIR Application Installerに関連付かなくなりばつが悪いです。

Adobeによるとwebサーバに下記を追加せよと書いてあります。

AddType application/vnd.adobe.air-application-installer-package+zip .air

ですが、レンタルサーバなどで設定がいじれないケースは自分でHTTP headerをmimeを返したりしたくなります。

phpの場合は下記のようなスクリプトを.airファイルと同じところにおいて、ダウンロードのリンクはこのphpファイルにすればよいです。

<?php
$filename = "foo.air";
$mime = "application/vnd.adobe.air-application-installer-package+zip";
header("Content-Type: {$mime}");
header('Content-Disposition: attachment; filename="'.$filename.'"');
readfile($filename);
?>