treedown’s Report

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

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

(1/2)AdobeAIRのダウングレードのためアンインストール

AdobeAIRがメジャーバージョンアップしてバージョンが21から22にアップデートされました。
今日はダウングレードを対処したご報告です。
応用すると、他のアプリでも使えそう…というか個人的にはよく利用するTIPSです。

バージョンで動かない

内製のAIRアプリがあるのですが、これが誤動作する、と連絡がありました。
で、どうも切り分けしていくうちにAdobeAIRのアップデートがされたPCだけがこの誤動作が発生するらしい、というところまで分かったようで、いったんダウングレードして内製アプリの修正が完了するまでバージョンを下げて運用する、ということになりました。

さてそうなると、ちょっと大変なのは現行バージョンアンインストールと一つ前のバージョンのインストールを実行しなきゃいけない、というところですが、数台なら簡単な動作でも数十台ともなるとやや大変な作業になってしまいます。

困ったな、ということで、バッチにすることにしました。

バッチで簡単に

バッチで簡単にするといっても、それほど気合い入れて動作を自動化する、という必要性は全くありません。
自分で操作する手作業のいくばくかが楽になればそれでOKくらいの勢いです。
なので、気楽にコマンドラインの連続実行をすることにしました。

対象のAdobeAIRを調べる

現行バージョンの22.0.0.153が問題を引き起こす対象です。これを一つ前のバージョンAdobeAIR 21.0.0.215に巻き戻しです。
まずは、レジストリからアンインストールに必要な情報を収集してきます。
アンインストール情報を探すには、レジストリエディタから
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall」
の場所を開いて、表示されるGUIDから目的のアプリケーション名を探し出します。
AdobeAIRを探すとありました。
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F2E04A40-3EA7-42F8-B7CC-B6E7A39DC150}"
のキーに
----------------------------------------------
DisplayName:Adobe AIR
DisplayVersion:22.0.0.153
ModifyPath:MsiExec.exe /I{F2E04A40-3EA7-42F8-B7CC-B6E7A39DC150}
UninstallString:MsiExec.exe /I{F2E04A40-3EA7-42F8-B7CC-B6E7A39DC150}
----------------------------------------------
という表記があるレジストリキーがあることが発見されました。
ちなみにAdobe AIRはバージョンごとにGUIDが変わるようです。22で上記のGUIDなのですが、21以前は違うGUIDのキーでした。

アンインストール検討

ここの「UninstallString」に注目です。
このmsiexecコマンドの表記がインストールコマンドで、この/Iとなっているのを/Xに書き換えることでアンインストールを動作させることができるようになります。
書き換え後
MsiExec.exe /X{F2E04A40-3EA7-42F8-B7CC-B6E7A39DC150}
こんな感じです。
でもこれだと、消しますか?とかあれこれ確認が出てきて操作が増えます。ちょうどコントロールパネルのプログラムの追加と削除(appwiz.cpl)から削除するのとあまり変わらなくなりますので、この問いかけやメッセージ無で実行したいところです。

msiexecのヘルプやメッセージで/q(/quiet)でサイレントモードのはずなのですが、対象の/qも/qnもうまいこと動作しません。
やむを得ず次善の/qbで実行したところ、進捗画面は表示されますがうまいこと実行されるのは発見できました。
図:表示される進捗画面

f:id:treedown:20160704084521p:plain

元々自分の操作の省力化が目的なので/qbで妥協することにします。

ここまででアンインストールのためのコマンドラインが出来上がりました。

MsiExec.exe /X{F2E04A40-3EA7-42F8-B7CC-B6E7A39DC150} /qb

これです。

実はもう一つ考えていたことがあるのですが、続きはまた明日。