treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

AIRアプリ(.airファイル)をサイレントインストールしたい

探しても情報が少なかったAIRアプリのインストール方法について、調べて検証した結果をご報告です。
それはAdobeAIRで動作する内製アプリを展開するときのことでした。

AIRアプリってサイレントできない?

.airファイルで提供されるAdobeAIR上で動作するAIRアプリと呼ばれるアプリケーションは、いままでサイレントインストールが出来ない、と思っていました。
※正確にはサイレントインストールを実行する方法は調べたけど、うまくいってなかった、というほうが正しいのですが。
いままで調べたところではarh.exe(AIR Redistribution Helper(ARH)ユーティリティの実行ファイル)を使う、ってところまでは知っていたけど、うまくいってませんでした。

で、やむなく今までやっていたのは

"C:\Program Files (x86)\Common Files\Adobe AIR\Versions\1.0\Adobe AIR Application Installer.exe" ".airファイル名のフルパス指定"

というコマンドライン。
例えばフリーソフト「縮小専用AIR」をPalletControlなどの力を借りて権限代行した実行をして、

"C:\Program Files (x86)\Common Files\Adobe AIR\Versions\1.0\Adobe AIR Application Installer.exe" "C:\temp\shukusnA.air"

こういう感じで実行することで…

f:id:treedown:20181031150737p:plain

f:id:treedown:20181031150819p:plain
のようなインストーラを出しちゃう、操作はいるけど確実にインストールが完了できる方法を採ってきました。
でもどうしてもサイレントインストールしたい、ユーザの操作なしにしたい、ということで調べたところ、ちょっと自分が勘違いしていたことがあったようです。

まずはarh.exeのオプションをおさらい

arh.exeはコマンドラインで、引数として.airファイルを指定することで、AdobeAIR上で動作するアプリのインストールを実行してくれます。

インストールは不要で
<http://airdownload.adobe.com/air/distribution/latest/win/arh.exe>
よりダウンロードできます。

書式は

arh -installAppSilent {( -location <loc> ) -desktopShortcut -programMenu } <file>

各オプション:

-location
インストール場所の指定

-desktopShortcut
この指定で、デスクトップ上にショートカットアイコンを作成

-programMenu
この指定で、プログラムメニューにインストールしたアプリが追加(表示)

file
インストールする AIR ファイルの指定

と、このような感じです。

しかし失敗する

縮小専用AIR(shukusnA.air)だと例えばC:\temp\にarh.exeとshukusnA.airを保管して、カレントディレクトリをC:\temp\に移動し、
arh -installAppSilent -desktopShortcut -programMenu "C:\temp\shukusnA.air"
と実行するとインストールがサイレントインストールで完了するはずが、
-------------------------------------------------------
c:\temp>arh -installAppSilent -desktopShortcut -programMenu "C:\temp\shukusnA.air"

failed (consult log)

c:\temp>arh -installAppSilent "C:\temp\shukusnA.air"
failed (consult log)
-------------------------------------------------------
エラーになってしまいます。オプションを外しても同じ。

なぜ?ログを探す

ログを探し出してみました。
探すと、
%USERPROFILE%\AppData\Local\Adobe\AIR\logs

Install.log
というファイル名で保管されていました。
インストールを実行しているユーザプロファイルにアクセスが必要で、runasなどで権限代行をしている場合には代行している権限のユーザプロファイル内にログが生成されています。
例えばshukusnA.air導入に失敗したときのエラーログです。
-------------------------------------------------------
(中略)
[2018-10-15:12:11:46] Native installation package creation succeeded
[2018-10-15:12:11:46] Starting silent app installation to C:\Program Files (x86). Installing app com.adobe.example.shukusen-air version 2.0.2 using the source file at file:///C:/temp/shukusnA.air
[2018-10-15:12:11:46] Got an unexpected fatal error while in stateInstalling: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="Unhandled exception Error: Directory can't be written to" errorID=5006]
[2018-10-15:12:11:46] Application Installer end with exit code 7
-------------------------------------------------------
[2018-10-15:12:11:46]ネイティブインストールパッケージの作成に成功しました
[2018-10-15:12:11:46]サイレントアプリのインストールをC:\ Program Files(x86)に開始します。 file:/// C:/temp/shukusnA.airのソースファイルを使用してapp com.adobe.example.shukusen-airバージョン2.0.2をインストールする
[2018-10-15:12:11:46] stateInstalling中に予期しない致命的なエラーが発生しました:[ErrorEvent type = "error" bubbles = false cancelable = false eventPhase = 2 text = "未処理の例外エラー:ディレクトリは存在しません"errorID = 5006"に書き込まれました
[2018-10-15:12:11:46]アプリケーションインストーラの終了コードが終了コード7
-------------------------------------------------------
ん?仮のインストーラファイルを「C:\Program Files(x86)に開始します」(※Starting silent app installation to C:\Program Files (x86).)とか書いてあるぞ?
で直後のエラーでは「 "未処理の例外エラー:ディレクトリは存在しません"」(※"Unhandled exception Error: Directory can't be written to")となって処理が終了しています。

あっけなく完了

これ、C:\Program Files (x86)への権限の問題じゃない?
結局、コマンドプロンプト(管理者)で起動して実行したら、成功。
-------------------------------------------------------
c:\temp>arh -installAppSilent -desktopShortcut -programMenu "C:\temp\shukusnA.air"

done.
-------------------------------------------------------

f:id:treedown:20181031151042p:plain

そういうオチでした。
いやあ、しまったなぁ。以前失敗したのもじゃあ同じエラーだったのか。