ディストリに依存しないAIRアプリケーション実行方法
(2015/1/8)GNU/Linux向けのAdobe AIRは廃止され、本記事の内容も古い内容となっている。
「Adobe AIR 1.5のインストーラ使用時の使い方」はAdobeが提供するインストーラを使用した場合の使い方となるが、「Adobe AIR 1.5のインストール(準備とインストーラ関係)」で扱っているAIRのインストーラが使えないディストリの場合、この方法では使えない。
しかし
http://web.archive.org/web/20080920025032/http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&catid=677&threadid=1349878&enterthread=y
の情報により、別途配布されているSDKのパッケージに含まれるbin/adlで.airファイル(ZIP圧縮されている)内のMETA-INF/AIR/application.xmlを開くことでアプリケーションの起動ができることが分かったため、デスクトップ環境上の関連付けの仕組みを利用してNautilusなどのGUIファイルマネージャから.airファイルを開くことでそのAIRアプリケーションが起動できるようにするためのスクリプトと関連付け設定ファイル群を作成した。
準備
SDKのダウンロードページからGNU/Linux向けのSDKをダウンロード後/opt/AdobeAIRSDK/へ展開しておく。
項目 | 値 |
---|---|
ファイルサイズ | 19,403,150バイト |
MD5 | 5dced4b26ec1606d794bc72cfd2cafb0 |
SHA-1 | 0a5dc95685103c81d25b559b15e3858034a58128 |
項目 | 値 |
---|---|
ファイルサイズ | 19,686,708バイト |
MD5 | f1a3618595216fd3e4b99a16fb404a93 |
SHA-1 | d5687b41a92721cbb24aa3d34309a317f5eaf033 |
スクリプト
[任意]ファイル名: AIRRunner.sh ライセンス: MIT#! /bin/bash # AIRRunner.sh: Adobe AIR Application Runner # for Adobe AIR 1.5 on GNU/Linux # Licensed under MIT # (C) 2009 kakurasan # version 20090831 # Requirements: # * Adobe AIR SDK (AdobeAIRSDK.tbz2), unpacked to /opt/AdobeAIRSDK/ # * unzip # * zenity # THANKS: # * http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&catid=677&threadid=1349878&enterthread=y#4911388 AIRSDKDIR=/opt/AdobeAIRSDK ADL=${AIRSDKDIR}/bin/adl PATH=/bin:/usr/bin die() { zenity --error --title "AIRRunner: Error" --text "${1}" exit 1 } # check if [[ ! -x /usr/bin/zenity ]]; then echo "Error: zenity is not installed" exit 1 fi [[ -x /usr/bin/unzip ]] || die "unzip is not installed" [[ -x "${ADL}" ]] || die "Cannot find adl (SDK not installed)" # input file if [[ ${#} -eq 1 ]]; then # relative path ==> absolute path AIRFILE="$(cd "$(dirname "${1}")" && pwd)/$(basename "${1}")" else AIRFILE=$(zenity --file-selection --title "Open .air file") if [[ ${?} -ne 0 ]]; then # cancel exit 0 fi fi [[ -f "${AIRFILE}" ]] || die "File \"${AIRFILE}\" does not exist" # tmpdir TMPDIR="$(mktemp --tmpdir -d AIRRunner.XXXXXXXX)" [[ ${?} -eq 0 ]] || die "cannot create tempdir" # unpack cd "${TMPDIR}" if ! unzip "${AIRFILE}"; then rm "${TMPDIR}" -fr die "Cannot unzip \"${AIRFILE}\"" fi if [[ ! -f "${TMPDIR}"/META-INF/AIR/application.xml ]]; then rm "${TMPDIR}" -fr die "Cannot find \"META-INF/AIR/application.xml\" in \"${AIRFILE}\"" fi # run "${ADL}" -nodebug "${TMPDIR}"/META-INF/AIR/application.xml "${TMPDIR}" # cleanup rm "${TMPDIR}" -fr # EOF
(2009/8/31)一時ディレクトリの処理など細かい部分を調整
このスクリプトは、一時ディレクトリに.airファイルの中身を展開後[SDKのディレクトリ]/bin/adlでアプリケーションを実行し、終了後に先ほど展開した一時ファイル群を掃除するという動作をする(特に難しいことはしていない)。
使い方
デスクトップ環境への関連付け
以下のファイルを全て適切な場所に配置し、本記事後ろの「登録・反映作業」に書いたコマンドを実行する必要がある。起動ファイル
ファイル名: ~/.local/share/applications/airrunner.desktop(一般ユーザ・自分用) もしくは /usr/share/applications/airrunner.desktop(全ユーザで使用)[Desktop Entry] Name=Adobe AIR Application Runner Comment=Adobe AIR Application Runner GenericName=Adobe AIR Application Runner Exec="[AIRRunner.shの場所(絶対パス)]" Type=Application Terminal=false MimeType=application/vnd.adobe.air-application-installer-package+zip; Categories=X-None;
スクリプトを[ホームディレクトリ]/bin/以下に配置する場合、Exec行は「/home/[ユーザ名]/bin/AIRRunner.sh」のようにする。
ファイルの種類
ファイル名: ~/.local/share/mime/packages/AdobeAIR.xml(一般ユーザ・自分用) もしくは /usr/share/mime/packages/AdobeAIR.xml(全ユーザで使用)<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/vnd.adobe.air-application-installer-package+zip"> <comment>Adobe AIR Application</comment> <comment xml:lang="ja">Adobe AIRアプリケーション</comment> <glob pattern="*.air"/> </mime-type> </mime-info>
中身はZIPなのでマジック*1「PK」を条件に付け加えてもよいかもしれない。
登録・反映作業
設定反映のためのコマンドは2つ実行する。「アプリケーションの実行」ダイアログや端末にコピペするとよい。(一般ユーザ・自分用) update-desktop-database ~/.local/share/applications/ update-mime-database ~/.local/share/mime/ (全ユーザで使用) gksudo update-desktop-database /usr/share/applications/ gksudo update-mime-database /usr/share/mime/
ここまでを完了すると、NautilusなどのGUIファイルマネージャから.airファイルをダブルクリックするなどの操作でAIRアプリケーションが起動できるようになる。